Перенаправления заголовков, основанные на обнаружении пользовательского агента, могут быстро выйти из-под контроля. Довольно много сайтов, которые я унаследовал за эти годы, содержат массивные .htaccess
файлы, которые замедляют соединение с сервером. Для проверки в будущем вы можете начать с массива поисковых запросов для проверки (что-то вроде черного списка). Я обычно храню свои в базе данных. Вот пример того, что работает для user_agents и ip_addresses с использованием одной и той же функции.
<?php
//user agent blacklist array
$uab = array(
'!^$!','!CaptiveNetworkSupport!','!curl!i'
);
//User agent handling array
$uah = array(
'HTTP/1.0 400 Bad Request','HTTP/1.0 400 Bad Request','HTTP/1.0 403 Forbidden',
);
$ipb = array(
'!^1\.2\.3!',
'!^8\.8\.8\.8!',
'!^199\.21!',
'!^0\.0\.0\.0$!',
);
$iph = array(
'Location: /no-bots.php',
'Location: /warning.php',
'HTTP/1.0 403 Forbidden',
'HTTP/1.0 403 Forbidden',
);
function blackList($blacklist,$handler,$means){
foreach($blacklist as $key=>$bl){
if (preg_match($bl,$means)){
header($handler[$key]);
exit();
}
}
}
if(!empty($_SERVER['HTTP_USER_AGENT'])){
$user_agent = $_SERVER['HTTP_USER_AGENT'];
} else {
$user_agent = '';
}
blackList($uab,$uah,$user_agent);
//This should always be set!
if(!empty($_SERVER['REMOTE_ADDR'])){
$ip_address = $_SERVER['REMOTE_ADDR'];
} else {
$ip_address = '0.0.0.0';
}
blackList($ipb,$iph,$ip_address);
?>
В моей собственной CMS у меня есть страница бана, которая позволяет бэкэнд-пользователю определить, как нарушитель будет наказан или с ним обращаются. Это полезно для блокировки всевозможных вещей и лучше всего использовать в сочетании с iptables.
person
AbsoluteƵERØ
schedule
02.05.2013