漏洞解决方案-短信炸弹攻击
短信炸弹攻击
- 一、前置知识
- 二、修复方案
- 三、代码参考
一、前置知识
短信炸弹攻击,就是通过把发送短信验证码的报文截获后进行重放造成的攻击。
威胁描述:
如果短信炸弹攻击成功,攻击者可以向该手机号一直不停的发送短信,不但因短信过多发送造成经济损失,甚至会使短信系统崩溃,无法正常提供服务。
涉及功能点:
任何涉及短信验证码发送的功能点,如用户注册、登录、转账等功能。
二、修复方案
- 前端控制,通过图形验证码的验证,如果验证不通过则不允许发送短信;
- 其次为防止类似httpclient工具直接请求没有session的情况,进行session有无判断,如果没有session信息则不允许发送短信;
- 除此之外,再从session、ip、手机号、客户号四个方面请求频率和单位时间请求次数两个角度进行限制,防止短信炸弹,具体如下:
1)session:
a.同一sessionId两次的请求时间间隔不应小于设定值(建议请求时间间隔为60s);
b.同一sessionId的单位时间请求次数不应大于设定值(建议10分钟时间内请求次数不能超过8次);
2)ip:
同一ip单位时间请求次数不应大于设定值(考虑到局域网问题,建议只限定10分钟时间内请求次数不能超过200次);
3)手机号:
a.同一手机号两次的请求时间间隔不应小于设定值(建议请求时间间隔为60s);
b.同一手机号的单位时间请求次数不应大于设定值(建议10分钟时间内请求次数不能超过5次);
4)客户号(针对如个网跳转注册直销等已知客户号的场景):
a.同一客户号两次的请求时间间隔不应小于设定值(建议请求时间间隔为60s);
b.同一客户号的单位时间请求次数不应大于设定值(建议10分钟时间内请求次数不能超过5次);
三、代码参考
安全开发实例:
通过session id防护:
#!javaString sessionId = session.getId(); //判断同一sessionId请求时间间隔是否小于设定间隔,防止恶意攻击 Long preReqTime4Session = reqTimeMap4Session.get(sessionId); //上次请求时间 Long curReqTime4Session = System.currentTimeMillis(); //本次请求时间 AtomicInteger errorTimes4Session = reqErrorMap4Session.get(sessionId); //频繁调用累计次数 if(preReqTime4Session!=null) {//频率校验if(curReqTime4Session-preReqTime4Session < refuseInterval) {log.error("session_attack: " + sessionId + "===curReqTime-preReqTime < refuseInterval==");isError = true;} else {//总次数校验if(errorTimes4Session != null && errorTimes4Session.get() >= sessionTimes) {log.error("session_attack: " + sessionId + "===errorTimes==" + errorTimes4Session);isError = true;}} } else {if(errorTimes4Session != null) {reqErrorMap4Session.remove(sessionId);} }
通过IP防护:
#!javaString ipAddress = getIp(context); //判断同一IP请求时间间隔是否小于设定间隔,防止恶意攻击 Long preReqTime = reqTimeMap.get(ipAddress); //上次请求时间 Long curReqTime = System.currentTimeMillis(); //本次请求时间 AtomicInteger errorTimes = reqErrorMap.get(ipAddress); //频繁调用累计次数 if(preReqTime!=null) {//次数校验if(errorTimes != null && errorTimes.get() >= ipTimes) {log.error("ip_attack: " + ipAddress + "===errorTimes==" + errorTimes);isError = true;} } else {if(errorTimes != null) {reqErrorMap.remove(ipAddress);} }
通过手机号防护:
#!javaLong preReqTime4Phone = reqTimeMap4Phone.get(mobilePhone); //上次请求时间 Long curReqTime4Phone = System.currentTimeMillis(); //本次请求时间 AtomicInteger errorTimes4Phone = reqErrorMap4Phone.get(mobilePhone); //频繁调用累计次数 if(preReqTime4Phone!=null) {//频率校验if(curReqTime4Phone-preReqTime4Phone < refuseInterval) {log.error("phone_attack: " + mobilePhone + "===curReqTime-preReqTime < refuseInterval==");isError = true;} else {//次数校验if(errorTimes4Phone != null && errorTimes4Phone.get() >= mobileTimes) {log.error("phone_attack: " + mobilePhone + "===errorTimes==" + errorTimes4Phone);isError = true;}} } else {if(errorTimes4Phone != null) {reqErrorMap4Phone.remove(mobilePhone);} }
通过客户号防护:
#!javaLong preReqTime4CifNo = reqTimeMap4CifNo.get(cifNo4TokenImg); //上次请求时间 Long curReqTime4CifNo = System.currentTimeMillis(); //本次请求时间 AtomicInteger errorTimes4CifNo = reqErrorMap4CifNo.get(cifNo4TokenImg); //频繁调用累计次数 if(preReqTime4CifNo!=null) {//频率校验if(curReqTime4CifNo-preReqTime4CifNo < refuseInterval) {log.error("CifNo_attack: " + cifNo4TokenImg + "===curReqTime-preReqTime < refuseInterval==");isError = true;} else {//次数校验if(errorTimes4CifNo != null && errorTimes4CifNo.get() >= cifNoTimes) {log.error("CifNo_attack: " + cifNo4TokenImg + "===errorTimes==" + errorTimes4CifNo);isError = true;}} } else {if(errorTimes4CifNo != null) {reqErrorMap4CifNo.remove(cifNo4TokenImg);} }
关注公众号,一起分享实用安全技术,关注安全最新事件,记录工作常见问题,吐槽生活真心操蛋。
漏洞解决方案-短信炸弹攻击相关推荐
- 【网络安全】——逻辑漏洞之短信轰炸漏洞
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...
- 短信验证码安全常见逻辑漏洞
短信验证码安全常见逻辑漏洞 声明:此文转自http://www.lx598.com/hangyedongtai/978.html (短信验证码安全常见漏洞) 短信验证码常被用于网站用户注册.账户安全登 ...
- 短信验证码常见漏洞总结
使用短信验证码验证身份已经是很普遍的了,注册和忘记密码时最为常见.但是在实际应用中,很多产品的短信验证接口存在诸多漏洞,很多人在开发中也是没有注意到这些问题,因此呢给企业和个人造成不必要的损失.接下来 ...
- 请给你的短信验证码接口加上SSL双向验证
序言 去年年底闲来几天,有位同事专门在网上找一些注册型的app和网站,研究其短信接口是否安全,半天下来找到30来家,一些短信接口由于分析难度原因,没有继续深入,但差不多挖掘到20来个,可以肆意被调用, ...
- android 360短信拦截短信验证码,莫名收到短信验证码?360借条安全专家提醒小心新骗局...
日常生活中,许多人在注册.登陆APP时往往都会选用短信验证码的方式来进行,这样不仅方便,也可以避免因为账号过多而遗忘登陆密码.然而,这样的方式却也成为不法分子眼中的漏洞,围绕短信验证码来展开的电信诈骗 ...
- 帮我推荐一个靠谱的106短信群发平台?
* 接口类型:触发短信接口,支持发送验证码短信.订单通知短信等. * 账户注册:请通过该地址开通账户 http://user.ihuyi.com/?exClaO * 注意事项: *(1)调试期间,请 ...
- 短信业务 防恶意攻击解决方案
一.方案概述 短信验证码接口被恶意攻击,不仅会会造成大额的短信服务费用,更会对用户造成骚扰,引起投诉,降低公司形象. 二.系统涉及短信业务场景 略. 三.恶意攻击的途径 由于裸露短信发送接口的漏洞,恶 ...
- 阿里云短信验证解决方案(java版)(redis存储)
阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...
- Sery送的书与网站短信解决方案
今天Sery(http://sery.blog.51cto.com/)在qq上说要送我一本他刚写的书<互联网运营智慧>,因为里面引用了我写的一段程序. #!/usr/bin/perl -w ...
- 惊天后续 | 不仅可看照片和短信, 利用 iOS 漏洞无需密码还能打电话、发短信!...
11月17日,雷锋网发了这个消息后,一石惊起千层浪: 11月16日,外媒 softpedia 上爆出一个惊人的大消息:iOS 中有一个严重的安全漏洞,任何人都可以借助它来绕过 Passcode 的保护 ...
最新文章
- 【javascript位置属性】screen对象
- [渝粤教育] 西南政法大学 法理学 参考 资料
- kotlin 覆盖属性_Kotlin程序| 方法覆盖的示例
- RHadoop和CDH整合实例(三)- RHive
- 【kaggle入门题一】Titanic: Machine Learning from Disaster
- 如何在DevSecOps道路上快速、安全地抵达终点
- windows查看端口号占用
- 氩焊机器人编程_焊接机器人编程及调试方法
- 洛谷2501 BZOJ1801中国象棋题解
- onSaveInstanceState()方法问题
- JavaScript常用算法 1
- 判断数组类型的4种方法
- codeblocks解决网络方面错误undefined reference to `inet_ntoa@4'|
- Spurious wakeup
- CodeForces 379C -- D - New Year Ratings Change
- ENVI基本操作之彩色合成
- 隐马尔可夫模型(HMM)攻略
- 前端文档网站快速生成工具
- Python随机车牌;京牌摇号⼩程序
- 深入浅出JS—18 手把手实现一个Promise类
热门文章
- 解决网页文字不能复制,复制网页文字的方法
- 网络没有运行wmi服务器,win7系统中没有wmi服务如何解决_win7没有wmi服务的解决方法...
- LM2596电路简析
- winrm java客户端_winrm service
- 詹姆斯麦迪逊大学计算机专业,詹姆斯麦迪逊大学简介_詹姆斯麦迪逊大学介绍_詹姆斯麦迪逊大学James Madison University (JMU)...
- 汽车行业中SOP和PT是什么意思?
- java的path的设置路径_java安装path设置
- USB数据采集卡,Labjack U6、T7 采集卡 VB、C++ 编程范例
- Windows 运行中的程序的图标在任务栏显示不正常\图标变白色的解决方法
- 将图片排版至docx文档中