PHP: Ещё пара простейших защит
...и в продолжение темы об элементарной безопасности скриптов (вчера не успел дописать пост).
Всегда полезно проверять, откуда юзер пришёл на страницу с формой. Представим, что у нас есть скрипт чтото.php
, содержащий ссылку для перехода к скрипту url.php
, выводящему форму HTML, куда юзер может напечатать свой комментарий:
<a href="url.php">URL</a>
Перед тем, как выводить юзеру форму, проверим в скрипте url.php
, пришёл ли он с правильной ссылки, находящейся на нашем хосте:
<?php $host='http://'.$_SERVER['HTTP_HOST']; //Определяем URL скрипта $fromurl=getenv('HTTP_REFERER'); //Определяем URL, с которого пришли if (strstr($fromurl,$host)===false) { //Если пришли с другого хоста echo "Вы зашли с неправильной страницы $fromurl :)\n"; exit; } ?>
Увы, как и многое другое, свойство HTTP_REFERER
можно подделать. Но от простейших атак код всё же поможет.
Второй момент - перед антимспамовой проверкой и добавлением отправленного сообщения полезно делать в скрипте небольшую паузу, например, на 1 секунду:
sleep (1);
Этот тоже будет служить мелкой защитой от ботов - для человека эта секунда пройдёт незамеченной, а вот программа по подбору пароля или капчи в результате станет работать заметно дольше и гораздо меньше будет загружать сервер.
25.05.2011, 11:34 [9230 просмотров]