蛮力反击措施无效?

时间:2016-02-04 20:27:28

标签: php security authentication

大家好抱歉打扰了,但是我已经多年了,试图找出为什么我的强力对策根据我的离线安全扫描程序不起作用。即使我的代码如下工作,它也会一直触发随机用户/通行证组合:

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;
?>

请大家评估一下我做错了什么? 非常感谢你提前!

1 个答案:

答案 0 :(得分:1)

的问题:

#1:您正在使用会话cookie

您将基于会话而不阻止特定IP。会话通过会话cookie连接到客户端,如果删除它,则会话不存在,因此尝试不会。大多数漏洞扫描程序不会保留会话cookie。尝试。

#2:您在isolated.php

上取消设置会话

基本上发生的事情是isolated.php只是在您的服务器上运行而且根本不会影响客户端。在尝试加载另一页之后,客户端不必等待页面加载。从本质上讲,它只会浪费你服务器上的时间而不会浪费时间。

你应该怎么做?

  1. 抓住用户IP(大量教程)
  2. 创建一个SQL数据库以存储基于IP的尝试。每次尝试用户或用户UPDATE attempts SET attempts=attempts+1 WHERE ip = [THE_IP]时,如果没有尝试,则基本上运行INSERT
  3. 查询数据库以检查当前用户IP是否> 20次尝试。
  4. 如果根据数据库中的信息尝试次数超过20次,则阻止用户。