防止HTTP强制攻击

时间:2011-03-19 11:19:57

标签: php brute-force

所以,我有一个PHP脚本,它接受用户'密钥'并检查它是否有效。我不希望他们在3次尝试失败后能够提交表格。

我有使用cookie的想法,但由于它们是客户端,因此它们可以刷新,因此它看起来是我脚本的第一次尝试。也使用会话,但因为它们在会话后过期。它很容易绕过。该程序不需要DB,如果可能的话我想避免使用它。

我还想过要求提供验证码才能提交表格。这是最好的选择吗? 我期待听到你的建议。

4 个答案:

答案 0 :(得分:3)

由于您显然已经存储了用户和密钥,因此也要跟踪失败的尝试。按用户而不是每个会话进行此操作,因为攻击者每次都假装成为新连接很容易。使用此信息,您可以使登录尝试的时间更长。

如果您还跟踪上次尝试失败的时间,您可以使用它来减少失败的尝试次数。

如果您不确定是否要使用验证码,也许在首次尝试失败后使用它是个主意。

答案 1 :(得分:2)

IP地址REMOTE_ADDR和引荐来源HTTP_REFERER使用$_SERVER或Captcha声音检查确认。所有这些都是最有效的。

答案 2 :(得分:0)

我建议像recaptcha这样的外部验证码服务:http://www.google.com/recaptcha/learnmore

强调外部

答案 3 :(得分:-1)

如何将字符串添加到url / cookie,以及当前时间,尝试次数和这些的哈希值。像那样,重复使用前面这样的字符串因为时间检查不起作用,并且生成这样的字符串需要通过样本对散列函数进行逆向工程,这是非常困难的。