Самостоятельное создание сайта
Самостоятельная раскрутка и продвижение сайта

Защита от спама

   Спам-роботы, на сегодняшний день, по уровню технологий достигают высоких вершин. Спам-роботы, каждый день усовершенствуются и засоряют сайты различной информацией. Целью спам-робота является размещение на сайте ссылки на некоторый ресурс или тематической информации. Однако, встречаются и просто добавление наборов символов (не имеющих смысла) и ссылок на несуществующие хосты. В любом случае, со спам-роботами нужно бороться.

   Принцып их работы приблизительно такой: сначала они анализируют всемирную паутину на поиск сайтов, подходящих им по определенным критериям. Потом, индексируют страницы сайта с формами (формы коментариев/сообщений). Далее следует анализ формы и ее защиты. Если спам-программа успешно добавляет данные в форму и они размещаются на странице, то такая страница попадает в общую базу данных для дальнейшего систематического добавление спама (от 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"];

//однако если бот использует анонимные прокси-сервера, а так оно скорее и есть, то пределить реальный ip-адрес Вам поможет эта функция

function getip()
{
   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) $ip = getenv("HTTP_CLIENT_IP");
   elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR");
   elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR");
   elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR'];
   else $ip = "unknown";
   return($ip);
}

$ip = getip();

?>

3. блокирование спам-роботов с помощью параметра REFERER (адрес предыдущей страницы-источника откуда выполнен переход). Если этот параметр пустой значит робот-спам напрямую выполняет запрос к Вашей форме. Ведь большинство спам-роботов так и делают, они читают страницу лишь один раз, все остальные попытки добавления спама идет с помощью прямого обращения робота к серверу. Другими словами с прокси-сервера происходит отправка уже готового запроса к серверу и передаются уже наперед известные данные.

   Пример получения значения поля REFERER на php:

<?php

$referer = getenv("HTTP_REFERER"); //или
$referer = $_SERVER["HTTP_REFERER"];

?>

4. блокировка/удаление спама с помощью фильтра текста на спам-слова.
   Данный вид защиты является самым эффективным. Весь переданный/полученный текст фильтруется на наличие спама по словосочетаниям и словам.
   Слабым местом спам-роботов является их ограниченный по смыслу спам-текст, в котором почти всегда повторяются одинаковые ключевые слова.
   Стоп-слова Вы можете занести в базу данных и проверять каждое сообщение/коментарий на их наличие используя функцию stristr (регистро-независимый вариант strstr).

   Пример проверки текста комментария на наличие спам-слова "casino":

<?php

if (stristr(html_entity_decode("Это текст комментария, здесь спам-робот может пригласить Вас сыграть в казиноcasino"),"casino") == true) {
   echo "Найдены элементы спама!"
} else {
   echo "Комментарий успешно добавлен!"
}

?>

Как видно в примере, мы делаем проверку текста комментария/сообщения на наличие спама до того как добавляем в базу данных. Но, также, желательно делать проверку и после того как информация попала в базу данных, потому что спам-роботы могут изменять символьное представление текста через функции, чтобы Ваш фильтр не сработал и в тоже время, учитывая дальнейшую обработку текста сервером, в базу данных будет занесено слово/словосочетание аналогичное Вашему слову-спаму.
   Спам-роботы, также, могут передавать форме слова/словосочетания которые состоят из вариаций символов и кода символов html. Для того, чтобы перевести html код в символы используем функцию html_entity_decode.

   Вот пожалуй и все, надеюсь перечисленные выше способы защиты ваших страниц от спама помогут Вам.

624
2.3 31
Рейтинг: +2.3 , голосов 31
Вы еще не голосовали!
Добавить комментарий (комментариев: 7)
Удалить ответ

Ваш почтовый ящик никогда не будет опубликован
Трудно разобрать цифры? Нажмите на рисунок, чтобы обновить.
#1 09/03/2013 22:12 Alex
reply
Неплохая идея фильтр текста
#2 09/03/2013 22:11 Alex
reply
Неплохая идея фильтр текста
#3 27/02/2011 13:56 Сергей
reply
Классный скрипт коментарий. Можно както его получить. Пасибо
#4 20/12/2010 15:43 Сергей
reply
Спасибо что отозвались и за скрипт. Честно говоря не думал что он сделан на Smarty. Теперь нужно по подробнее почитать одну из ваших статеек про Smarty и всёже попробовать скепать, что нибудь с применением Smarty. Вот мне интересно а чё вы для создания сайта пользуетесь шаблонизатором, разве не проще в готовый шаблон вгонять просто код php. Мне кажется, так былобы легче серверу, или может я чтото не правильно понимаю? Ну всёравно информация для создателей сайта клас, мне нравится. И ещё раз за ответ и предоставленный скрипт большое Вам спасибо. С уважением Сергей.
20/12/2010 15:57 admin
Шаблонизатор Smarty , позволяет отделить логику от дизайна, шаблоны отдельно, код отдельно, так проще. А насчет легче серверу, так здесь все предусмотренно, шаблонизатор для каждой страницы составляет кеш-файл, который состоит из кода вперемешку с дизайном и таким образом сервер отдает кешированые файлы. А кеш обновляется за определенный промежуток времени. Потеря скорости почти незаметна, зато структуру можно удобную создать
#5 17/12/2010 13:02 Сергей
reply
Сделал для жены сайта по адресу awqust.com, но немогу выбрать для него, скрипт коментов. Ваш понравился. Не могли бы вы поделиться. Если да то на каких условиях или за какую цену. Буду ждать отыета Сергей.
20/12/2010 11:04 admin
я выслал Вам письмо с приложеным скриптом
#6 20/09/2009 00:42 андр
reply
Внатуре работает щас передерем СПС
#7 12/04/2009 20:45 Alex
reply
Спасибо благодарствуем за полезности

Дополнительно

» С чего начать сайт?

» Установка программ

» Пример создания сайта

» Хостинг и домен

» Оптимизация сайта

» Раскрутка сайта

» Заработок web-мастера

» Примеры PHP/Javascript

» Блог и мои записки

Последние новости

Статьи по рейтингу

» Особенности покупки контента 5.0 1
» Выбор хостинга 4.8 5
» Поисковые системы 4.7 9
» Курс молодого web-мастера 4.6 21
» Где взять бесплатные ссылки 4.5 11
» Что такое сниппеты 4.5 6
» Addstudio - SEO модуль 4.5 4
» Отладка js и CSS 4.4 14
» Стратегия дохода на Sape.ru 4.3 3
» Каталоги и биржи статей 4.3 4