需求:防止短信验证码被恶意频繁请求
这类攻击主要目的是刷掉目标网站的短信费用,攻击者会不停变换各种接口参数如手机号、IP(采用高匿代理)等去请求后台发送短信验证码,进行恶意刷短信,后台根本无力辨别用户真伪。攻击目标明确,难以防护,因其变换不同IP、手机号,一些简单措施基本失效,产品设计人员在前期产品设计时尤其需要注意这类攻击。(https://blog.csdn.net/liyanlei5858/article/details/79740530)
解决方案:
对发送者进行唯一性识别
防止恶意攻击者通过修改传向服务器各项参数,造成多IP多手机号刷短信验证码的行为,所以后台应对前台传过来的参数进行验证。方法一般是用token作为唯一性识别验证,后台写一个算法将token注入到前端,然后前端可以通过相应的规则获取到token,在发送短信验证请求接口数据时带上token,在后端对token进行验证,验证通过才能正常将短信发送。
然而有漏洞:
token设置的优化:简单的字符串改变位置的算法,有可能很轻松被破解!
简单的很容易被破解,这里推荐加密,可以进行对称加密,对称加密有很多种,这里推荐SHA256带key加密!
那key也是字符串,被反编译也是有可能的,这里推荐对key也进行一次或多次处理,写入代码的是加密后的key, 用的时候先解密key, 再在生成唯一的token时用key!
就算反汇编可以看到解密前的key,但是他不知道怎么处理这个key,他不知道这个key的解密逻辑!
以上应该可以解决大部分问题,如果还被破译,那就混淆,处理敏感字符串。但也不是完全的
参考:https://www.jianshu.com/p/49e98b8a05fd
还不行就进行非对称的加密:
这里推荐使用基于RSA的加密解密。