短信API接口在web中得到越来越多的应用,如用户注册,登录,密码重置等业务模块都会使用手机验证码进行身份验证。一般情况下,我们会采用这样的安全策略,将短信发送频率限制在正常的业务流控范围内,比如,一个手机号一天最多下发10条短信,同时限制时效,验证次数。但这样的策略,攻击者通过遍历手机号,还是阻止不了短信资源被消耗的情况。

如何防止短信api接口遍历呢?

在平时浏览网站的时候,我会稍微留意一些网站是怎么做的,并记录了一些短信API接口防遍历的技术实现方式。

第一种方式:白名单

这是最简单的一种方式,但应用场景有限,比如,在一些内部应用系统(从HR系统或其他系统同步手机号过来验证),此时,只需要验证是否为内部员工手机号,如不是,直接提示非内部员工手机号;如是,再执行短信api流控策略。

第二种方式:验证码(推荐)

用户点击获取短信验证码的时候,弹出图形验证码进行验证,同时发送图形验证码和手机号码到后台验证。

当然,这种方式用户体验极差,每次都需要手动需要图片验证码才能发送手机验证码,于是,有了进一步的优化方案,从用户体验和安全角度出发,可设计为当用户输入3次错误手机验证码后自动弹出验证码。

还有另外一种方式,采用当下比较流行的滑块验证或点选验证方式,用户体验也会有所改善。

第三种方式:接口加密(不推荐)

前端与后台协商好加密方式,比如md5(timestamp+telphone+salt),前台发起请求时,同时发送 timestamp、telephone、sign参数,后台接收这些参数,按照协商好的加密方式生成一个校验值与sign进行对比,如果错误,则不处理。另外,js代码混淆+短信api业务流控限制。

风险点:虽然做了代码混淆,但js加密算法一旦泄漏,并不是一种安全的措施,但也是一种比较容易实现的技术方案。

客户端ajax代码实现:

以上,是三种常见的预防短信api接口遍历的技术实现方案。

我创建了一个免费的知识星球,主要用于技术问题探讨。我将这个问题发表在知识星球,得到了不少星友的热情回应,以下摘录一些星友们的看法。

这是一个免费的星球,诚邀你的加入!

点击本文末尾的“阅读原文”,即可进入星球查看。

如何防止短信API接口遍历相关推荐

  1. 中国移动飞信免费发短信API接口(第三方)

    飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:// ...

  2. 飞信免费发短信API接口调用方式

    飞信免费发短信API接口调用方式(通过HTTP访问以下网址.支持GET和POST): http://sms.api.bz/fetion.php?username=您的移动飞信登录手机号&pas ...

  3. 中国移动飞信免费发短信API接口(第三方 Fetion API)

    [文章作者:张宴 本文版本:v1.1 最后修改:2010.08.03 转载请注明原文链接: http://blog.s135.com/fetion_api/ ] 备注:2010年7月底移动飞信修改协议 ...

  4. JAVA 短信API接口调用 附 文档 Demo

    JAVA 短信API接口调用 附 文档 Demo 1.请求地址 http://host:port/sms 请求方式可以 POST 和 GET方式,建议采用POST方式 2.参数说明 参数需要 URLE ...

  5. 中国移动飞信免费发短信API接口

    飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:// ...

  6. 中国移动飞信免费发短信API接口(第三方) 1

    Code [文章作者:张宴 本文版本:v1.0 最后修改:2009.03.22 转载请注明原文链接:http://blog.s135.com/fetion_api/] 飞信是由中国移动通信集团公司推出 ...

  7. 中国移动飞信免费发短信API接口(第三方 Fetion API

    飞信 是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:/ ...

  8. 使用腾讯云发送短信API接口实现(完整流程)

    步骤 一.开通腾讯云短信服务 二.申请签名前的准备(申请公众号) 三.创建签名和模板 四.腾讯云API实现发送短信 五.使用springboot进行调用 六.可能会报的错误 一.开通腾讯云短信服务 在 ...

  9. 【Python】创蓝253云通讯平台---国际短信API接口demo

    #!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...

  10. 【Python】创蓝253云通讯平台国际短信API接口DEMO

    #!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...

最新文章

  1. [Python]Python操作/管理Mysql学习(一)
  2. 月英爱耀承(帮别人名字作诗)
  3. mysql 比较大小 慢_MYSQL慢查询优化方法及优化原则
  4. csu 1757(贪心或者树状数组)
  5. OpenGL编程指南6:顶点数组
  6. VSTO之旅系列(三):自定义Excel UI
  7. etcd nginx 容器_Etcd+Confd实现Nginx配置文件自动管理
  8. 状态栏和navigationbar 关联上,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。...
  9. 软件架构(6)---软件架构设计的过程
  10. python 爬虫 表格_爬虫数据表格
  11. 刷屏的北京雾霾,2018 年北上广深空气质量分析
  12. 计算机组成原理——指令格式设计
  13. linux下解压rar文件
  14. 最新版Activit7从原理到项目,工作流精讲上线
  15. python interpreter下载_Piton - Python interpreter
  16. RHCE(KVM——保存、恢复、克隆虚拟机)
  17. 关于功放的正确调整及安全匹配音箱方法的计算及说明
  18. 数据库查询语句遇到:Unknown column ‘XXXX‘ in ‘where clause‘解决方法
  19. Vscode下载与配置(C语言)
  20. Android 环境的安装

热门文章

  1. UVA - 473 Raucous Rocker 多维dp
  2. beego 静态文件处理
  3. visio怎么画球_cad怎么画装配图
  4. cad怎么表示出一个孔_AutoCAD如何画一个带孔的立体球
  5. 手把手教你用 Keras 实现 LSTM 预测英语单词发音
  6. 广告数据定量分析:第一章——广告优化中的统计学
  7. AI Studio 数据集
  8. mxh缩写英语_mxht的含义,mxht是什么的缩写,mxht的词语,mxht代表的意思
  9. 云知声(Unisound)蜂鸟系列AI离线语音识别芯片方案介绍
  10. aliddns ipv6_python脚本实现ipv6的ddns功能