先说布景:机器不断的发送恳求或许歹意提交,会给服务器形成很大压力;针对这种进犯 更优的战略是判别提交次数,发生动态验证码 ,即 判别ip规则时刻内重复发送到达N次弹出验证码 。下面是小拽在实践进程中一个简略的辨认ip,使用session记载和防护的进程。
进程如下;
辨认ip
ip归于白名单直接经过[白名单战略:内网ip+指定ip表]
使用session存储ip的恳求时刻戳
校验规则时刻内ip的恳求次数
采纳相应的办法
/** * 获取和校验ip;一起避免短时刻内屡次提交 * * @notice :弹出验证码,需求替换掉echo $echo_str 即可。 * @return string :回来校验成功的ip */ protected function getAndCheckIP() { // 获取环境ip if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; // check 环境ip if (!$this->isWhiteList($ip)) { $echo_str = "提交过于频频,请稍后再试!"; // 构建ip的时刻栈数据 if (!is_array($_SESSION[$ip])) { $_SESSION[$ip] = array(); } if (isset($_SESSION[$ip][0])) { $_SESSION[$ip][] = time(); // session 保存时刻为6小时。整理session $post_interval_first = time() - $_SESSION[$ip][0]; if ($post_interval_first > 21600) { $_SESSION[$ip] = array(); } // 两次提交小于1s,制止提交 $post_interval_pre = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if ($post_interval_pre < 1) { echo $echo_str; exit; }; // 您在10s内现已提交了3恳求,制止提交 $post_interval_third = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if (isset($_SESSION[$ip][3]) && ($post_interval_third < 10)) { echo $echo_str; exit; } // 您在1分钟期间现已提交了5恳求,制止提交 $post_interval_fifth = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if (isset($_SESSION[$ip][5]) && ($post_interval_fifth < 60)) { echo $echo_str; exit; } // 6小时内提交10次,制止提交 if (isset($_SESSION[$ip][10])) { echo $echo_str; exit; } } else { $_SESSION[$ip][] = time(); } } return ($ip); }
白名单战略选用:内网ip放行和特定ip放行
/** * 查验是否存在于白名单中 * * @param $ip :校验的ip * @return bool :校验成果 */ function isWhiteList($ip){ /** * 内网ip默许悉数存在于白名单中 */ if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){ return true; } // 是否在写死的whitelist 里边 return in_array($ip,$this->_WHTTE_LIST); }
小拽选用的比较简略的战略,如上面代码,实践进程中能够结合事务需求。
1s内制止重复提交
5s内提交上限3次
60s内提交上限5次
6小时内提交上限10次
http://146.148.60.107:9991/review?pass=QkNURnt4c3NfaXNfbm90X3RoYXRfZGlmZmljdWx0X3JpZ2h0fQ==&id=2...
关于成功率的说法通过这种攻击使得攻击者在仅有一个普通域账号的情况下可以远程控制 Windows 域内的任何机器,包括域控服务器。 Windows XP 专业 x64 版 SP2借不了赌怎么办、总输钱...
本文假定你知道这些基本知识:02 IIS+ASP/ASPX+MSSQLGoogle搜索要害字 “关于本站 – 网站协助 – 广告协作 – 下载声明 – 友谊衔接 – 网站地图 – 办理登录”这一关是关...
…… 2. 转发方针的NAT数据到网关,保持方针的外出数据。 public void WriteVbs(HttpContext context) {...
function() {cat ./-[1][2]黑客接单渠道 现在BurpSuite的插件形似很火,许多国外的Burp爱好者都开端编写了自己的浸透测验插件,偶尔也想做个插件来写写,所以百度了下,在国...
陈述显现,政府、交际、戎行、国防仍然是 APT 进犯者的首要方针,动力、电力、医疗、工业等国家基础设施性职业也正面对着APT进犯的危险。 而金融职业首要面对一些老练的网络违法团伙的进犯要挟,如Mage...