Интернет портал

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Интернет портал » Web-программирование » PHP: методы защиты


PHP: методы защиты

Сообщений 1 страница 2 из 2

1

PHP: методы защиты

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

Генерация случайного session id
Самый простой, но довольно эффективный метод для избавления от спам-ботов.

Суть метода заключается в том, что в форму добавляется скрытое поле, содержащее случайным образом сгенерированную длинную последовательность символов. При отправке формы её обработчик проверяет session id, и, если он верен, то действие выполняется, если нет, то нет.

Сейчас я объясню, как это реализовать.

Итак, в PHP-код скрипта (в самое начало кода) вставляем несколько строчек:

session_start();
$sid = md5 (rand (100000, 999999));
$_SESSION['sid'] = $sid;

Первая строчка начинает сессию, вторая – генерирует случайную последовательность символов (32-х значную), а третья – сохраняет эту переменную в сессии.

Далее, в HTML-код формы вставляем следующую строчку (естественно, код должен находиться в этом же файле, или в подключаемом):

<input type="hidden" name="sid" value="<?php echo $sid; ?>">

Теперь в PHP-код обработчика вставляем несколько строчек (также, в самое начало кода):

session_start();
if ($_GET['sid'] != $_SESSION['sid']) $sid_error = true;
/* используйте $_POST['sid'] вместо $_GET['sid'] если Вы используете метод передачи POST */
else $sid_error = false;
session_destroy();

Первая и последняя строчки – открывают и уничтожают сессию, остальные – проверяют session id. Если id не u1087?правилен, то переменная sid_error имеет значение true, иначе – false. Обработка этой переменной лежит уже на Ваших плечах.

Визуальное подтверждение
В последнее время этот метод защиты от ботов становится всё менее эффективным и всё более раздражающим. Суть заключается в том, что для подтверждения операции пользователь должен ввести код «с картинки». Данный метод не требует большого кода, но сейчас я обнаружил, что потерял код визуального подтверждения... Точнее, удалил (безвозвратно), поэтому, как реализовать данный метод, сейчас я рассказать не могу. Что ж, расскажу о других.

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

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

Как реализовать этот метод.

Для начала в PHP-код скрипта (в начало кода) вставляем следующий фрагмент:

session_start();
$confirm_num = rand (100, 999);
$_SESSION['confirm_num'] = $confirm_num;

В форму ввода вставьте такой код:

Введите число <?php echo $confirm_num; ?> в поле справа: <input type="text" name="confirm_num" value="">

Теперь, в PHP-код обработчика вставляем такой код (не забываем о том, что код надо вставить в самое начало):

session_start();
if ($_SESSION['confirm_num'] != $_GET['confirm_num']) $conf_error = true;
/* используйте $_POST['confirm_num'] вместо $_GET['confirm_num'] если Вы используете метод передачи POST */
else $conf_error = false;
session_destroy();

Если код введён верно, то, как Вы наверное, догадались, conf_error имеет значение true, если неверно, то false.

0

2

Любопытная тема если кто хочет по обшаться я всегда с удовольствием :) HappyCamper2007@wikichat.com

0


Вы здесь » Интернет портал » Web-программирование » PHP: методы защиты


Создать форум