Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Противостоим спам–ботам

В данной статье я расскажу Вам как можно если не полностью защититься от атаки спам–ботов, то существенно сократить количество спама.

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

Шаг №1. «Ключом по врагу», или защита от спама генерацией случайного ключа.

Допустим, у нас есть файл index.php, в котором содержится форма, направляющая данные файлу post.php, который сохраняет их на сервере. Тогда в начале php–кода index.php пишем следующий код:

// начинаем сессию
session_start ();
// генерируем случайную и достаточно длинную строку
$key = md5 (rand (10000, 99999));
// щаписываем его в сессию
$_SESSION ['key'] = $key;

Теперь в HTML–коде делаем скрытый элемент формы, в который записываем этот самый ключ.

<input type=”hidden” name=”key” value=”<? echo $key; ?>” />

Теперь приступаем к файлу post.php. Просто проверям наличие и правильность ключа. Если ключ не задан или неправилен, то не обрабатываем запрос.

// начинаем сессию
session_start ();
// проверяем наличие ключа
if (!isset ($_POST ['key']))
{
// здесь Ваш код — запрос не обработан
}
elseif ($_POST ['key'] !== $_SESSION ['key'])
{
// здесь Ваш код — запрос не обработан
}
else
{
// здесь Ваш код — запрос обработан
}

Теперь поясню, отчего это может защитить. Этот код может защитить от автоматических спамеров, которые будут посылать запрос напрямую к post.php. От более продвинутых авттоматических спамеров, которые следуют путём пользователя, данный код не защитит, впрочем как и от простых людей, которые размещают свою рекламу вручную (хотя от них реально действующей защиты не существует). Но некоторый процент спама данный код отбросит, что уже неплохо.

Шаг №2. «Стой! Кто идёт?», или проверяем, пришёл ли пользователь с нашего сайта.

Также в post.php можно проверить, а с нашего ли сайта пришёл «пользователь»? Если не с нашего, то отправляем пользователя в баню.

Вот код, реализующий предыдущую простую идею (вносим в файл post.php)

// проверяем, есть ли в адресе имя домена, на котором раположен Ваш сайт
if (substr_count (getenv (‘HTTP_REFERER’), “domen.ru”) == 0)
{
// если нет — не обрабатываем запрос (Ваш код здесь)
}
else
{
// иначе — не обрабатываем
}

Шаг №3. «Проводим математический тест», или используем один из вариантов CAPTCHA.

Под термином «CAPTCHA» некоторые пользователи понимаюь картинку с текстом, который доолжен ввести пользователь. Вообще–то, это лишь один из возможных вариантов CAPTCHA. Вообще, по определению, CAPTCHA — это автоматический тест для разделения компьютеров и людей, правда специальные программы обходят большинство CAPTCHA.

Мы не будем использовать самый распространённый вариант, тем более, что ему уже посвящена отдельная статья на этом сайте. Мы проведём тест на способность отправителя данных в форме делать простейшие арифметические операции, а конкретно, операцию сложения. Что–ж, приступим.

Для начала внесём изменения в файл index.php

Вот что мы впишем вверху, в php–коде

// запускаем сессию, если уже запущена, не добавляйте эту строчку!
session_start ();
// генерируем два случайных числа от 1 до 15 и заносим их в сессию
$num1 = rand (1, 15); $_SESSION ['num1'] = $num1;
$num2 = rand (1, 15); $_SESSION ['num2'] = $num2;

Теперь в форму заносим следующий код

Сосчитайте сумму двух чисел: <? echo $num1; ?> + <? echo $num2; ?> = <input type=”text” name=”sum” />

В файле–обработчике post.php записываем следующие инструкции:

// запускаем сессию, если не запущена
session_start ();
// проверяем наличие введённой суммы и её правильность
if (!isset ($_POST ['sum']))
{
// здесь Ваш код — запрос не обработан
}
elseif ($_POST ['sum'] !== ($_SESSION ['num1']) + $_SESSION ['num2'])
{
// здесь Ваш код — запрос не обработан
}
else
{
// здесь Ваш код — запрос обработан
}

Используя три довольно–таки простых метода защиты от спам–ботов Вы существенно уменьшите количество спама на Вашей странице. Но, если спам всё ещё приходит, то могу дать Вам несколько советов (их реализация в статье не описана, так как они выходят за её рамки):

  • текст чисел можно «спрятать» от просмотра в HTML–коде с помощью JavaScript–хитростей
  • также можно использовать более продвинутую CAPTCHA, Вы можете найти множество вариантов в Интернете
  • можно сделать проверку на наличие в информации стоп–слов, нопример, можно использовать те слова, которые Вы часто видите в спам–сообщениях

Желаю Вам успехов в создании сайта, оборонённого от спам–ботов!


Обсуждения

Нет комментариев к “Противостоим спам–ботам”

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал