Php 限制每秒web脚本访问总量:好主意还是坏主意?如何实施?

Php 限制每秒web脚本访问总量:好主意还是坏主意?如何实施?,php,Php,我想知道如何在全球范围内限制每秒的访问——针对所有IP,而不是每个IP——以防止僵尸网络或类似网络破解密码。这将有效地将密码破解攻击转化为DDOS攻击 请注意,此脚本的预期流量非常低(每天1次访问) 比如说 //pseudocode... while (now() - last_access < 1 second) sleep(0.3 seconds) last_access = now() //伪代码。。。 while(now()-最后一次访问

我想知道如何在全球范围内限制每秒的访问——针对所有IP,而不是每个IP——以防止僵尸网络或类似网络破解密码。这将有效地将密码破解攻击转化为DDOS攻击

请注意,此脚本的预期流量非常低(每天1次访问)

比如说

//pseudocode...
while (now() - last_access < 1 second)
    sleep(0.3 seconds)

last_access = now()
//伪代码。。。
while(now()-最后一次访问<1秒)
睡眠(0.3秒)
上次访问=现在()
两个问题

  • 这是个好主意吗
  • 如何在PHP中实现它?(因为我无法控制apache配置)

  • 编辑:如果有n个用户试图同时访问该网站,我很高兴每个用户都能等待n秒。每个页面只需加载一个页面。

    首先,您需要确定阈值。什么算是更高的负载,什么算是DDOS攻击

    其次,您需要将最后一个访问变量保存到更永久的位置,如数据库

    但是,是的,您正在寻找的是可能的,并且如果您的站点经常受到攻击,建议您这样做

    只需显示一个通用的

    <h1>The server is currently experiencing extreme load. Please try again later</h1>
    
    服务器当前正经历极端负载。请稍后再试
    
    您的阈值应该更像是过去几秒钟内的5个用户(在这种情况下,您需要记录过去几秒钟内的所有访问,并自己进行计算)



    更好的方法是强制用户注册,并在注册时使用CAPTCHA。

    好吧,首先,你需要计算出你的阈值。什么算更高的负载,什么算DDOS攻击

    其次,您需要将最后一个访问变量保存到更永久的位置,如数据库

    但是,是的,您正在寻找的是可能的,并且如果您的站点经常受到攻击,建议您这样做

    只需显示一个通用的

    <h1>The server is currently experiencing extreme load. Please try again later</h1>
    
    服务器当前负载过重。请稍后再试
    
    您的阈值应该更像是过去几秒钟内的5个用户(在这种情况下,您需要记录过去几秒钟内的所有访问,并自己进行计算)



    更好的方法是强制用户注册,并在注册时使用CAPTCHA。

    有更好的方法来防止僵尸程序。首先,强制用户不能快速使用您的站点不是一个很好的主意。相反,使用相同的方法,您可以测试IP尝试登录的时间。例如,如果是,不到1秒,甚至不处理输入,只输出“慢下来!”。更好的方法是使用类似的方法,比如一个简单的数学问题。

    有更好的方法来防止僵尸程序。首先,强迫用户不能快速使用您的网站不是一个好主意。相反,使用相同的方法,您可以测试IP尝试登录的时间。例如,如果低于1秒其次,甚至不要处理输入,只输出“慢下来!”。更好的方法是使用captha类似的方法,比如一个简单的数学问题。

    如果你绝对确定该网站每天只合法访问一次,你当然可以这样做

    您可以使用PHP写入txt文件,并将最后一次访问存储在那里——也就是说,如果您无法访问数据库或其他存储该信息的方法


    正如您所提到的,这可能会导致您的网站永久关闭,因为即使是很小的攻击(每秒3-4次点击很难称为拒绝服务攻击)也足以将您锁定。

    如果您完全确定该网站每天只合法访问一次,您当然可以这样做

    您可以使用PHP写入txt文件,并将最后一次访问存储在那里——也就是说,如果您无法访问数据库或其他存储该信息的方法

    正如您所提到的,这可能会导致您的网站永久关闭,因为即使是很小的攻击(每秒3-4次点击很难称为拒绝服务攻击)也足以将您锁定。

    想想看

    这基本上是一个“如何自己DDoS”的解释

    如果您设置了限制并阻止从该点开始访问,那么您只是在破坏您自己的站点—这是DDoS攻击的最终目标。此外,设置这样的人为限制将使您的站点崩溃的速度比任何DDoS都要快(因为脚本需要在达到真正的“硬限制”之前激活)

    DDoS缓解解决了一个问题:“如何在DDoS攻击期间保持运行?”而关闭自己并不是一个答案

    这就像用氰化物治疗头痛,“从技术上讲”是有效的,但我不认为这是一种治疗方法。

    想想看

    这基本上是一个“如何自己DDoS”的解释

    如果您设置了限制并阻止从该点开始访问,那么您只是在破坏您自己的站点—这是DDoS攻击的最终目标。此外,设置这样的人为限制将使您的站点崩溃的速度比任何DDoS都要快(因为脚本需要在达到真正的“硬限制”之前激活)

    DDoS缓解解决了一个问题:“如何在DDoS攻击期间保持运行?”而关闭自己并不是一个答案


    这就像用氰化物治疗头痛,“技术上”工作,但我不会称之为治疗。

    该网站每天只有一次访问权限??实际上是一个许可证服务器。好的,在峰值负载时,它可能会有相当多的访问权限,但平均每天1次。该网站每天只有一次访问权限??它实际上是一个许可证服务器。好的,在峰值负载时,它可能会有相当多的访问权限,但每天1次一般来说。简单的数学问题在质量稍高的机器人上不起作用。你需要使用成熟的ca