duanpao4172 2011-07-29 18:02
浏览 31
已采纳

Security-PHP登录尝试功能

I'm working on login form and I have to limit attempts to 3 and then block any form submit for 10 minutes. The following code isn't working correctly and I need to know how to block submitting after unsuccessful attempts. Thanks.

function autoDefender($attempts,$username,$pass)
    {
    $logins=0;
    $logins++;
    $ats = $attempts-$logins;
        if (isset($_POST['password']) && isset($_POST['userName']))
        {
            if($_POST['password']!=$pass && $_POST['userName']!=$username)
                {   
                    if($logins == $attempts)
                        {
                         echo ("<div class='errmg'>Acess denied for 1 minute</div>");
                        }
                    echo ("<div class='errmg'>Error:
                    invalid username or pass; <span class='atmpts'>$ats</span> attempts left</div>");
                }
        }
    }
  • 写回答

2条回答 默认 最新

  • douhuangjian9627 2011-07-29 19:06
    关注

    The problem here is that with each call of autoDefender the local variable $logins is reset to 0. So the state of how many attempts actually took place is not not maintained across multiple calls of autoDefender.

    You need to store this information somewhere persistently. In your case even across multiple requests.

    Note that this does also poses an attack surface for Denial of Service attacks as you can lock-out other users. So you should think twice who you attribute a failed attempt to. If you do it per user, you an attacker might lock-out many users when doing a bulk attack on all users. If you do it per remote client (e.g. IP address), you might lock-out other innocent users that just happen to use the same system (e.g. company or university network). If you do it per session, an attacker might just drop the issued session ID.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c