什么是防止字典攻击的最佳方法?我已经想到了几个实现,但它们似乎都有一些缺陷:
X登录尝试失败后锁定用户.问题:容易变成拒绝服务攻击,在很短的时间内锁定了许多用户.
增加用户名上每次登录尝试失败的响应时间.问题:字典攻击可能使用相同的密码但使用不同的用户名.
从IP地址逐次增加每次登录尝试失败的响应时间.问题:通过欺骗IP地址轻松绕过.
在会话中每次失败登录尝试的增量响应时间递增.问题:通过创建字典攻击很容易解决,该攻击会在每次尝试时触发新会话.
rook.. 21
我非常喜欢gmail的反暴力系统.它基于用户可以累积的"热量",在用户过热后,它们被提示用验证码.您可以使用sql数据库或使用redis incr跟踪热量.将热量分配给IP地址. 由于三次握手,在互联网上"欺骗"tcp连接是100%不可能的,但是代理服务器很多并且ip地址非常便宜.代理服务器通常用于发送垃圾邮件,您可以检查黑名单并自动提示他们使用验证码.
针对您的系统的每个不良操作都将更新热表.例如,登录失败将累积35%的热量.一旦热水平大于或等于100%,则用户被迫解决验证码.解决验证码将"冷却"该IP地址.热表可以包含时间戳列,该列设置为更新时的当前时间.大约24小时后,热量可以恢复到0.
reCaptcha是您可以使用的最安全的验证码.
我非常喜欢gmail的反暴力系统.它基于用户可以累积的"热量",在用户过热后,它们被提示用验证码.您可以使用sql数据库或使用redis incr跟踪热量.将热量分配给IP地址. 由于三次握手,在互联网上"欺骗"tcp连接是100%不可能的,但是代理服务器很多并且ip地址非常便宜.代理服务器通常用于发送垃圾邮件,您可以检查黑名单并自动提示他们使用验证码.
针对您的系统的每个不良操作都将更新热表.例如,登录失败将累积35%的热量.一旦热水平大于或等于100%,则用户被迫解决验证码.解决验证码将"冷却"该IP地址.热表可以包含时间戳列,该列设置为更新时的当前时间.大约24小时后,热量可以恢复到0.
reCaptcha是您可以使用的最安全的验证码.