“在测试过程中,特殊的操作往往容易触发异常场景,而这些异常场景也很容易引起安全问题!”
常见的安全漏洞就不多说了,这里主要介绍常见的业务安全问题及修复建议。
01 刷短信
问题描述:
当发送短信的请求接口只需要手机号码或其他可猜解的明文身份ID,则有可能被攻击者通过发包工具,大量发送给其他手机号码或用户,以达到刷短信的目的,这不仅导致资源被占用,还可能会导致被运营商拉黑,使整个网站的短信验证码瘫痪!
建议:
多加一层校验,如:图形验证码、第三方校验等。
02 爆破短信验证码
问题描述:
当验证码为6位数以内纯数字,有可能会被攻击者通过工具穷举爆破!
建议:
限制验证码的有效时间,并且限制验证码的错误次数。在这并不建议只加长短信验证码位数,不能把赌注押在日益更新的计算机性能上!
03 重置密码
问题描述:
当重置密码接口,只需要可猜解的明文身份ID或其他已暴露的信息时,有可能会被攻击者通过改包工具,更改用户身份,来达到篡改其他人的用户密码。
建议:
1、校验当前用户身份与短信验证码是否匹配;
2、用户身份加密,不可被猜解;
3、如果使用加密信息校验用户身份,需要保管好加密信息,不能随意显示在外面,并且限制好加密信息有效范围,防止加密信息泄密后被攻击者利用。
04 第三方登录
问题描述:
当使用第三方登录时,只需要第三方传过来的可猜解的明文身份ID,有可能会被攻击者利用篡改数据,冒充其他用户!
建议:
后端校验用户身份不要直接校验明文可猜解或公开的用户信息,可进行加密处理后再校验。
05 后端校验逻辑漏洞
问题描述:
1、每个业务最后一步变更数据的请求接口如果不做校验只接收数据,有可能会被攻击者利用,进行篡改已固定的数据!
2、同时执行多个有相关联的业务处理时,有可能会导致业务逻辑漏洞。
问题一建议:
1、控制参数值的有效范围;
2、校验处理的数据是否与提交请求的数据一致;
3、APP做校验证书,APP只信任服务器公钥。
问题二建议:
1、按顺序执行,需要共同资源时,单个执行,不建议并发处理;
2、先判断后处理还是先处理后判断,要注意业务处理先后顺序。