我有一个登录系统需要用户名和密码。我想在一定数量的失败登录尝试后显示验证码。什么是实施这个的正确方法?我在这个网站上阅读过,有些解决方案建议在users表中添加一个'failed-attempts-count'。但是,我需要失败的尝试不被绑定到某个用户 - 即我希望显示验证码,而不管输入的用户名是否存在于系统中。将这个存储在一个会话变量是好的(我正在使用PHP)?如果是这样,那么根据需要向会话变量中引入数据是否没有缺点?我已经有网站上的每个访问者的任何会话ID(无论是否登录),所以我可以创建一个表,将登录尝试与此会话ID相关联......有关最佳/最安全方法的任何想法?谢谢。限制登录尝试,无论用户?
更新:从答案迄今为止,它看起来像会话ID是不是最好的办法,因为黑客可以简单地明确他/她的缓存(但是这是一个真正的问题,因为难道不这样减慢蛮力攻击足以使其无用?)。另一种选择是通过IP ......但我对内部网或代理下的用户犹豫不决,因为失败的尝试将被共享......我无法真正想到任何其他方法..你能吗?
没错,但我认为首先考虑验证码的想法是阻止自动化的暴力攻击..所以在每次尝试解决问题后都不会关闭浏览器或清除缓存? – oym 2009-07-31 09:24:23