【问题标题】:php set time delays after input attemptsphp在输入尝试后设置时间延迟
【发布时间】:2013-02-20 03:54:16
【问题描述】:

问题与暴力攻击有关。 如果用户输入了错误的密码,php 会在 mysql 中记录尝试的日期时间。如果密码不正确,我需要用户只能在一定时间(1-2 秒)后进行下一次尝试。 据我了解,php sleep 不好,因为它不会阻止机器人发出请求?

什么是解决方案(在没有 php 睡眠的情况下设置时间延迟)?

【问题讨论】:

  • sleep() 或任何其他功能不能被机器人绕过。但为什么不添加验证码
  • 我认为您也可以通过会话来做到这一点,因为我认为机器人不会在每次请求之前清除 cookie。
  • 感谢您的回答。您的意思是根本不设置时间延迟,仅在 2-3 次尝试失败后添加验证码。如果找不到延迟解决方案,将添加验证码...或尝试使用会话...
  • ...抱歉,但请阅读机器人忽略 cookie。所以会话似乎不是解决方案

标签: php


【解决方案1】:

如果该用户的请求数很高,您可以在文件开头添加睡眠。 可能为过去 24 小时内的每个失败请求增加 1 秒,或者如果该数字达到某个阈值则退出。

<?
//script to find when last requests were made
if($failed>2)
{
    sleep($failed+1);
}elseif($failed>10)
{
    exit;//or redirect
}
//the rest of the file

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多