目的
提搞一下大家对安全的意识,顺便梳理一下自己的看法。
目前不可靠的方式
- 使用验证码,很多同学都以为在发送验证码的时候加个验证码就安全了,其实看过一点相关的AI 算法,就知道验证码破解非常简单。
大难题,手机注册。
- 如果是我会偏向可以用为主,不做IP 限制,毕竟这种攻击,损人不利己,除非同行。
- 很难区别,开大型会场和学校这种同一ip多人使用。
- 小弟不才,没能找到很好的方案,尽量避免这种方式。
我觉得比较靠谱的方式
- 1,在发起服务限制手机 10分钟内存在 3个未使用验证码禁止继续请求。防止无限制请求漏洞。
- 2,验证码每日错误超过10次就锁定,防止一直试,总会中奖。
- 3,年错误不能超过60次,防止暴力破解,每天都来的那种鬼。
- 4,用户每分钟只能发送一次。
- 5,使用用户级别错误记录,一天错10次就不再给他发送。(绑定手机的业务)
实现上的细节
以java为例子:
//我们都是这样进行创建,然后补补0
int randomCodeInt = (int)(random.nextGaussian()*1000000);
- 经过资料查询,Math.random() 以一个方法+System.nanoTime() 纳秒来生成种。
- 在代码泄露的情况下,发送随机码会有延迟,就算黑客同步时间也无法估算他的值,但是可以缩小范围。
- 实际使用延迟100+-ms 按限制设计3个限制。 中奖几率在 3% 左右。每天 10次也就上30%
- 固定种在启动的时间 更加安全,启动延迟更加严重,严重到秒级基本无法接近。
主机安全
顺便说一下主机安全, 主机不要直接暴露,最理想的暴力的主机是硬件及的。 并使用 RAS 登陆,不要用普通的秘密。
结束
欢迎大家补充,毕竟安全无上限。
网友评论