По всем вопросам пишите на webmaster@info-pages.com.ua. Вы можете свободно использовать/размещать/перепечатывать статьи сайта всего лишь указав ссылку на источник.
Как защитится от спам-роботов
Защита от спам-роботов
Размещено: 24 июля 2008
Спам-роботы, на сегодняшний день, по уровню технологий достигают высоких вершин. Спам-роботы, каждый день усовершенствуются и засоряют сайты различной информацией. Целью спам-робота является размещение на сайте ссылки на некоторый ресурс или тематической информации. Однако, встречаются и просто добавление наборов символов (не имеющих смысла) и ссылок на несуществующие хосты. В любом случае, со спам-роботами нужно бороться.
Принцып их работы приблизительно такой: сначала они анализируют всемирную паутину на поиск сайтов, подходящих им по определенным критериям. Потом, индексируют страницы сайта с формами (формы коментариев/сообщений). Далее следует анализ формы и ее защиты. Если спам-программа успешно добавляет данные в форму и они размещаются на странице, то такая страница попадает в общую базу данных для дальнейшего систематического добавление спама (от 1-3 раз в день).
Защитить свой сайт полностью от проникновения нежелательной информации стало практически почти невозможным. И эфективно бороться со спамом можно лишь используя комплекс эфективных мер.
К, таким мерам можно отнести:
1. использование капчи (капча - графический рисунок с изображением цифр/символов). Этот метод очень популярный и почти на каждом сайте вы можете найти различные формы для заполнения их посетителями использующие защитный код с помощью капчи.
Вы, наверное, уже замечали насколько трудно иногда угадать посетителям что-же там изображено, настолько веб-мастера изощренно искажают цифро-буквенный код. Это потому, что спам-роботы научились распознавать капчи. Если вы используете простую капчу, то шанс взлома формы возрастает.
Пример написания простой капчи на php:
<?php
$nomer = rand("1000","9999");/* выбираем случайное число от 1000 до 9999*/
$imge = imagecreate("50", "15"); /*создаем рисунок в ширину 50 пикселей и высоту 15*/
$background_color = imagecolorallocate ($imge, 255, 255, 255);/*задаем рисунку цвет фона*/
$green = imagecolorallocate($imge,10,110,190);/* устанавливаем цвет текста для нашего рисунка*/
imagestring($imge,4,4,0,$nomer,$green);/*рисуем текст с такими параметрами: $imge(наш рисунок),4 (размер шрифта (от 1 до 5)),4 (отступ на 4 пиксела слева),0 (отступ в пикселах сверху),$nomer (текст),$green (цвет текста)*/
header("Content-type: image/jpeg");/* посылаем заголовок серверу про то, что мы передаем ему рисунок формата jpeg*/
imagejpeg($imge); /*выводим рисунок*/
imagedestroy($imge);/* освобождаем память*/
?>
Путем добавления различных image-функций php Вы можете значительно видоизменить свою капчу и повысить уровень безопасности своей формы.
Очень хорошим способом защиты будет создание капчи с простым вопросом, понятным посетителю и не подающийся анализу спам роботу. Например, указать количество фигур, простая логическая задача и т.п.
2. блокирование спамеров по ip-адресу. Этот способ может пригодится, если можно определить ip-адрес спамера, но, как правило, спам-роботы используют прокси-серверы и определить реальный ip не предоставляется возможным.
Для определения ip-адреса можно использовать следующую функцию:
<?php
$ip = $_SERVER["REMOTE_ADDR"];
?>
3. блокирование спам-роботов с помощью параметра REFERER
(адрес предыдущей страницы-источника откуда выполнен переход).
Если этот параметр пустой значит робот-спам напрямую выполняет запрос к Вашей форме. Ведь большинство спам-роботов так и делают, они читают страницу лишь один раз, все остальные попытки добавления спама идет с помощью прямого обращения робота к форме. Другими словами с прокси-сервера происходит отправка уже готового запроса к форме и передаются уже наперед известные данные.
Пример получения значения поля REFERER на php:
<?php
$ref=getenv("HTTP_REFERER");
?>
4. блокировка/удаление спама с помощью фильтра текста на спам-слова.
Данный вид защиты является самым ефективным. Весь переданый/полученый текст фильтруется на наличие спама по словосочетаниям и словам.
Слабым местом спам-роботов является их ограниченный по смыслу спам-текст, в котором почти всегда повторяются одинаковые ключевые слова.
Стоп-слова Вы можете занести в базу данных и проверять каждое сообщение/коментарий на их наличие используя функцию stristr (регистро-независимый вариант strstr).
Пример проверки текста коментария на наличие спам-слова "casino":
<?php
if (stristr(html_entity_decode("Это текст коментария, здесь спам-робот может пригласить Вас сыграть в казиноcasino"),"casino")==true) {echo "Найдены елементы спама!"} else {echo "Коментарий успешно добавлен!"}
?>
Как видно в примере, мы делаем проверку текста коментария/сообщения на наличие спама до того как добавляем в базу данных. Но, также, желательно делать проверку и после того как информация попала в базу данных, потому что спам-роботы могут изменять символьное представление текста через функции, чтобы Ваш фильтр не сработал и в тоже время, учитывая дальнейшую обработку текста сервером, в базу данных будет занесено слово/словосочетание аналогичное Вашему слову-спаму.
Спам-роботы, также, могут передавать форме слова/словосочетания которые состоят из вариаций символов и кода символов html. Для того, чтобы перевести html код в символы используем функцию html_entity_decode.
Вот пожалуй и все, надеюсь перечисленные выше способы защиты ваших страниц от спама помогут Вам.
Семен Горбунков. Все права защищены, 2007-2008рр.
Статистика: всего статей 50, на модерации 0, комментариев 27, всего ссылок 10, новых 1, выполнено за 0.03 sec.