我的网站使用6位数的验证码,但是如果攻击者尝试所有组合,他很可能会成功提交时间的形式部分。(理论上1 /百万,实际上我使用的随机数生成器更多并非真正随意) 无论如何我可以进一步阻止他成功吗?一种方法是在一定次数的尝试后阻止任何人在5分钟内提交表单(例如,20),问题是如果我在会话中存储尝试次数,并且攻击者为每次尝试创建会话(自然自他使用的是程序,而不是浏览器),那就不行了。我不想修改现有的数据库模式来适应这种逻辑 另一种方法是增加使用的验证字符数量,这会给用户带来不便 欢迎提出所有建议。
答案 0 :(得分:3)
每次尝试后或x次尝试= D
后重新生成一个新数字答案 1 :(得分:2)
我建议添加字母。这将使蛮力更难,而不是增加更多数字。
编辑:您也可以在尝试不正确的尝试后慢慢完成答案。例如,延迟5分钟。答案 2 :(得分:2)
检查传入连接的IP地址。如果相同的IP地址尝试次数太多,速率会严格限制它们,如果它持续很长时间,则完全阻止它们。
当然,这不是一个完美的解决方案,但它会让它变得更加困难。