背景:
昨晚公司的验证码接口被黑客攻击了
后台妹纸准备让我换图形验证码,此图形验证码方案主要用作网站防止攻击,app 端要是搞的话比较麻烦,不想麻烦.分析初步想出了本文的解决方案.基本获得认可和实施.
我们公司的验证码接口格式如下(只是格式真实内容不是下面这样的)
http://服务器地址/api?e=14696&method=get-code&mobile=13554080000%%%%%token=D39690AAB8XXXXXXXXXXXXXXXXXXXX
黑客抓取到发送验证码的接口,不断的发送网络请求,公司凌晨一个号码就发送了1000多条短信,猜测黑客使用青花瓷等抓包软件抓取到接口不断的调用如下所示
while(1){
request() 验证码
}
整个验证码发送的回路如下:
解决方法:
服务器建一个表,记录每个用户的发送短信的次数,收到某个手机号码的的网络请求超过10次,就不再给验证码平台发送短信.这样避免短信过度消耗.如下图所示
- 1)仅仅改变电话号码不知道我们的算法 是得不到Token的
- 2)得不到Token,服务器都进不去,就调用发送验证码的接口了
黑客想继续攻击 再找一个真实的手机号码吧,再点击发送验证码按钮,抓取请求吧,这样的URL Token经过app代码算出来的肯定正确,由于服务器增加了限制5条(ps以前没限制,接口才会被攻击),搞一次可以再发5条,初步估算:一个人忙活5个小时(3000条短信,需要抓600次网络请求)估计可以为公司带来30块钱的损失吧,如果你想这么搞 我们让你搞哈哈
如果有更好的解决方案,欢迎留言或者加我微信:health689
- 作者开发经验总结的文章推荐,持续更新学习心得笔记
Runtime 10种用法(没有比这更全的了
成为iOS顶尖高手,你必须来这里(这里有最好的开源项目和文章)
iOS逆向Reveal查看任意app 的界面
JSPatch (实时修复App Store bug)学习(一)
iOS 高级工程师是怎么进阶的(补充版20+点)
扩大按钮(UIButton)点击范围(随意方向扩展哦)
最简单的免证书真机调试(原创)
通过分析微信app,学学如何使用@2x,@3x图片
TableView之MVVM与MVC之对比
使用MVVM减少控制器代码实战(减少56%)
ReactiveCocoa添加cocoapods 配置图文教程及坑总结