Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果不是在PHP中,失败的登录尝试/限制延迟设置在哪里?_Php_Mysql_Apache_Login_Throttling - Fatal编程技术网

如果不是在PHP中,失败的登录尝试/限制延迟设置在哪里?

如果不是在PHP中,失败的登录尝试/限制延迟设置在哪里?,php,mysql,apache,login,throttling,Php,Mysql,Apache,Login,Throttling,我有一个9年前回答过的问题,但给出的答案毫无用处() 在不使用sleep()的情况下,如何延迟对bot的登录尝试? 显然,想要阻止来自客户端代码的DoS攻击似乎令人困惑……我不明白,我可以在哪里设置“延迟”或“http登录请求”来自实际的服务器/apache或其他什么 请宽容一点,我因为筋疲力尽而离开了几天,现在又回来了,仍然没有发现对它的理解。 我理解并实现了限制部分——我知道如何设置数据库和表来捕获每次失败的尝试,但不知道如何设置apache/服务器/需要设置的任何东西来“暂停”当前用户/I

我有一个9年前回答过的问题,但给出的答案毫无用处()

在不使用sleep()的情况下,如何延迟对bot的登录尝试? 显然,想要阻止来自客户端代码的DoS攻击似乎令人困惑……我不明白,我可以在哪里设置“延迟”或“http登录请求”来自实际的服务器/apache或其他什么

请宽容一点,我因为筋疲力尽而离开了几天,现在又回来了,仍然没有发现对它的理解。
我理解并实现了限制部分——我知道如何设置数据库和表来捕获每次失败的尝试,但不知道如何设置apache/服务器/需要设置的任何东西来“暂停”当前用户/IP地址的脚本(处理登录表单的脚本)以便在接下来的x秒内登录

它是用PHP完成的吗?或者您是否设置了apache配置或htaccess规则来执行此操作?我真的需要这方面的帮助…

您不应该在脚本本身中使用“sleep()”,因为同一个系统仍然可以发送多个请求,并且您的线程都将被暂停睡眠,然后再进行响应

一个建议是存储访问的IP地址和/或会话令牌,然后如果该IP地址/会话令牌再次访问过快,您只需在PHP中拒绝/失败请求


因此,对于每个请求,请使用登录尝试检查数据库表,然后如果该标识符在最后一秒钟内已经访问过(或者无论您希望超时多长时间),只需返回429过多请求响应(或相关故障代码)。如果请求是新的,请将其存储在数据库中并继续处理。

使用sleep()是个坏主意。。sleep()使“进程”保持活动状态,以便消耗CPU和RAM。。PHP是处理这个问题的错误地方。。最好的方法是在防火墙中设置一个小跑,或者使用特殊的反DoSS硬件。@RaymondNijland是的,这就是为什么这个问题的答案没有帮助,我读了几十个关于不使用sleep()的答案。这真的是硬件问题吗?我不认为这是正常的做法。如果我买不起硬件,我的网站会受到DoS攻击吗?(我的web主机服务器说DoS保护默认随软件包提供,但其他人提到,您的主机的DoS保护仅在域级别,因此效率不高)。我应该怎么做?还有一个想法可能是实现一个挑战响应登录。它每次使用不同的编码/哈希签名字符串,并混淆JavaScript源代码。。它很可能不会完全阻止真正的黑客/黑客,它很可能会减慢他们的速度脚本小子们很可能会停止尝试另一个想法可能是实现cliënt SSL证书登录。。浏览器是否没有有效的cliënt SSL证书删除与signinThanks的连接以建议实际解决方案,但这似乎仍然取决于脚本和数据库,我认为,机器人可以绕过这些脚本和数据库?如果您只是试图阻止人们暴力强迫您登录,您只需要在我的回答中更改脚本即可。还要确保您的站点受到保护,免受SQLi攻击和任何形式的身份验证绕过(使用受信任的身份验证库而不是滚动自己的身份验证库是一个好主意)。如果您想阻止不同的DoS攻击,您可能需要通过主机提供商或Cloudflare之类的人提供DoS保护。