|
Данный класс решений вращается вокруг использования черных списков. В этих случаях вы будете полностью блокировать доступ на ваш сайт (или хотя бы процесс отправки сообщения), если IP-адрес пользователя совпадает с одним из «плохих» хостов из черного списка. Это эффективный способ остановить конкретных пользователей, рассылающих спам.
<b>Общедоступные черные списки</b> Есть целый ряд общедоступных черных списков, к которым вы можете получить доступ программно. Следует отметить, что часто эти списки предназначены для спамеров, которые используют электронную почту, а не веб-сайты. Тем не менее, довольно часто, если хост используется для одной негативной деятельности, то можно с уверенностью предположить, что другие виды деятельности также являются негативными.
Интерфейсы взаимодействия для каждого черного списка различны и их подробное описание выходит за рамки данной статьи. Два из наиболее широко известных списков являются SpamCop и SpamHaus. Вы также можете найти большой список различных серверов на DNSBL.info. Хотя некоторые из сервисов предоставляются бесплатно, они часто бесплатны только, когда используются как часть системы фильтрации электронной почты. Получение прямого доступа к необработанному списку для того, чтобы использовать его в качестве меры анти-спама комментариев может стоить денег.
В качестве простого примера вы можете проверить любой IP-адрес по базе данных SpamCop, выполняя DNS поиск IP-адреса, записанного в обратном порядке перед ‘.bl.spamcop.net’. Вы можете использовать следующий код:
<?php function spamIP($ip) { $reversed = preg_replace('/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/', '$4.$3.$2.$1', $ip); return checkdnsrr("{$reversed}.bl.spamcop.net", 'ANY'); } ?>
Если вы получите правильный ответ, то IP адрес есть в черном списке SpamCop.
<b>Собственный черный список</b> В то время как общественный черный список эффективен для выявления известных спамеров, прежде чем они доберутся до вас, такой список абсолютно бесполезен, если спамер нацелен только на ваш сайт. Лучшим решением для этого является ведение собственного черного списка спамеров, которым нужно блокировать доступ.
Как именно вы будете добавлять записи в этот черный список, будет зависеть от вашего веб-сайта. Иногда легче добавлять их вручную с помощью SQL, когда это необходимо. Или у вас может быть административный сайт, на котором можно выкладывать чёрные списки IP-адресов. Пример таблицы черного списка может выглядеть примерно так в MySQL:
CREATE TABLE `blacklist` ( `id` INTEGER(11) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, `addr` INTEGER(11) UNSIGNED NOT NULL, `expiration` DATETIME NOT NULL ) ENGINE=innodb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Вы заметите одно очень важное дополнение к этой довольно простой таблице: столбец `expiration` (истечение срока). Очень важно, чтобы вы никогда не блокировали IP-адреса навсегда. IP-адреса изменяются. Если один человек использует определенный IP-адрес в данный момент, это не означает, что через год (или даже через пять минут) тот же самый человек будет использовать этот IP-адрес. Это особенно верно для провайдеров, где каждый раз, когда человек подключается к Интернету, ему может быть предоставлен другой IP-адрес из пула.
При добавлении в таблицу IP-адреса, такого как 1.2.3.4, нужно просто выполнить:
INSERT INTO `blacklist` SET `addr` = INET_ATON('1.2.3.4'), `expiration` = DATE_ADD(NOW(), INTERVAL 1 WEEK);
В данном случае, мы установили срок истечения на одну неделю вперед. Вы можете изменить продолжительность в соответствии с собственными потребностями. Одним из распространенных способов является применение подвижной системы. Таким образом, первый раз вы блокируете IP-адрес на один час. Во второй раз блокируете его на один день. После этого – на неделю. Это, наверное, самый долгий срок, на который следует блокировать IP-адреса.
Проверка по чёрному списку, который вы только что создали, будет представлять собой обычный поиск на основе даты.
SELECT count(*) from `blacklist` WHERE `addr` = INET_ATON('1.2.3.4') AND `expiration` > NOW();
|