大家好抱歉打扰了,但是我已经多年了,试图找出为什么我的强力对策根据我的离线安全扫描程序不起作用。即使我的代码如下工作,它也会一直触发随机用户/通行证组合:
PAGE A(不敏感区域)Main.php CSRF&受保护的表单等待用户输入。 如果没有检测到CSRF攻击,则选择有效的验证码和目的地(有3个页面可能是目的地或登录),表格将引导您到例如B页登录,如下所示:
PAGE B LOGIN.php 此页面读取Referer,如果根据我的编程有效,则如下所示: 针对数据库检查公共表单user / pass / captcha / csrf key;
if($userisfound==1)
{
echo 'welcome to our site';
}
else {
$_SESSION['attempt'] = (!$_SESSION['attempt']) ? 0 : $_SESSION['attempt'];
if($_POST['username']){$_SESSION['attempt']++;}
if($_SESSION['attempt'] > 20)
{header('location:isolated.php');exit;}
}
PAGE C ISOLATED.php
<?php session_start(); session_unset(); session_destroy();
sleep(99999);
header(location:http://www.thanks.ty);
die;
?>
请大家评估一下我做错了什么? 非常感谢你提前!
答案 0 :(得分:1)
您将基于会话而不阻止特定IP。会话通过会话cookie连接到客户端,如果删除它,则会话不存在,因此尝试不会。大多数漏洞扫描程序不会保留会话cookie。尝试。
isolated.php
基本上发生的事情是isolated.php
只是在您的服务器上运行而且根本不会影响客户端。在尝试加载另一页之后,客户端不必等待页面加载。从本质上讲,它只会浪费你服务器上的时间而不会浪费时间。
UPDATE attempts SET attempts=attempts+1 WHERE ip = [THE_IP]
时,如果没有尝试,则基本上运行INSERT
。