Вместо того, чтобы полностью бороться со спамом с помощью CAPTCHA и спам-комментаторов - это хорошая идея для check each request против DNSBL и заблокировать пользователя, если они используют плохой IP-адрес?Должен ли я использовать DNSBL для проверки веб-трафика для блокировки спамеров?
$blacklists = array('web.sorbs.net', 'opm.tornevall.org');
$parts = explode('.', $_SERVER['REMOTE_ADDR']);
$ip = implode('.', array_reverse($parts)) . '.';
foreach($blacklists as $bl)
{
$check = $ip . $bl;
if ($check != gethostbyname($check))
{
error_log('PHP Security: [DNSBL] - ' . $_SERVER['REMOTE_ADDR'] . ' - ' . $bl);
die('Put a detailed error here so the client knows why they have been blocked');
}
}
Похоже, единственные проблемы были бы чрезмерно усердствовать IP блокирование хороших пользователей к DNSBL или большой стоимости изготовления DNS поиск каждый запрос.
Ну, если вы не можете положиться на это для своей основной защиты - что, если вы проверили несколько DNSBL и только заблокировали доступ, если данный IP был на всех из них. Это может помочь остановить ложные положительные результаты, а остальные меры защиты от спама могут помочь с ложными негативами. Звучит разумно? – Xeoncross 2010-11-28 19:04:59