Php 防止HTTP暴力攻击

Php 防止HTTP暴力攻击,php,brute-force,Php,Brute Force,因此,我有一个PHP脚本,它接受一个用户的“密钥”,并检查它是否有效。我不希望他们在三次尝试失败后仍能提交表格 我有使用cookie的想法,但由于它们是客户端的,所以可以刷新它们,因此这似乎是我的脚本的第一次尝试。也使用会话,但由于会话在会话后过期。这很容易绕过。该计划不需要一个数据库,我想避免它,如果可能的话 我还考虑过需要验证码才能提交表单。这是最好的选择吗? 我期待着听到你的建议 IP地址REMOTE\u ADDR和REFERERHTTP\u REFERER使用$\u服务器检查或验证码听起

因此,我有一个PHP脚本,它接受一个用户的“密钥”,并检查它是否有效。我不希望他们在三次尝试失败后仍能提交表格

我有使用cookie的想法,但由于它们是客户端的,所以可以刷新它们,因此这似乎是我的脚本的第一次尝试。也使用会话,但由于会话在会话后过期。这很容易绕过。该计划不需要一个数据库,我想避免它,如果可能的话

我还考虑过需要验证码才能提交表单。这是最好的选择吗?
我期待着听到你的建议

IP地址
REMOTE\u ADDR
和REFERER
HTTP\u REFERER
使用
$\u服务器检查或验证码听起来不错。所有这些的组合是最有效的。

IP地址
远程地址
和参考者
HTTP\u参考者
使用
$\u服务器检查或验证码听起来不错。混合使用所有方法是最有效的。

我建议使用外部验证码服务,如recaptcha:


强调外部

我建议使用外部验证码服务,如recaptcha:


强调外部

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

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


如果您不确定是否要使用验证码,那么在第一次尝试失败后使用验证码可能是个好主意。

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

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


如果您不确定是否要使用验证码,那么在第一次尝试失败后使用验证码可能是一个好主意。

在url/cookie中添加一个字符串,包括当前时间、尝试次数以及其中的一些散列。这样,由于时间检查,重用以前的此类字符串将不起作用,并且生成此类字符串需要通过示例对哈希函数进行反向工程,这是非常困难的。

如何向url/cookie添加一个字符串,其中包含当前时间、尝试次数和一些哈希值。这样,由于时间检查,重用以前的此类字符串将不起作用,并且生成此类字符串需要通过示例对哈希函数进行反向工程,这非常困难。

就我个人而言,我觉得验证码非常烦人,因此我不建议要求所有用户填写验证码。另一种可能是。是的,我希望使用验证码作为最后手段。就个人而言,我觉得验证码非常烦人,所以我不建议要求所有用户都填写验证码。另一种可能是。是的,我希望使用CAPTCHA作为最后手段。
HTTP\u REFERER
非常无用,因为它很容易伪造。@igorw同意,但混合使用各种方法是最有效的。
HTTP\u REFERER
非常无用,因为它很容易被伪造。@igorw同意,但混合使用各种方法是最有效的。哎呀,我对http暴力考虑得太多了,而没有考虑到你希望人们停止尝试太多次。抱歉。哎呀,我对http暴力考虑太多了,没有考虑到你希望人类停止尝试太多次。抱歉,这应该如何解决HTTP暴力攻击?我的观点是,如果你将尝试存储在数据库中,你可以跟踪一切,但是你仍然应该查询数据库并检查用户名和尝试。这应该如何解决HTTP暴力攻击?我的观点是,如果您将尝试存储在数据库中,您可以跟踪所有内容,但是您仍然应该查询数据库并检查用户名和尝试。