Защита от постоянных нажатий F5
Если у Вас на сайте есть какой-нибудь сложный скрипт, к которому может обратиться любой пользователь, то желательно сделать защиту от постоянных нажатий F5. Так же подобную защиту можно встретить на обычных сайтах, где просто запрещено постоянно обновлять страницу. В этой статье я покажу один из способов, как подобное можно реализовать.
Код достаточно простой:
<?php
session_start(); // Начинаем сессию
$ts = time(); // Получаем текущее время
$s_time = (empty($_SESSION["time"]))? 0: $_SESSION["time"]; // Если пользователь обращается к скрипту впервые, то устанавливаем значение 0, иначе берём его из сессии
$_SESSION["time"] = $ts; // Обновляем значение сессии
if ($ts - $s_time > 2) { // Если с момента предыдущего обращения прошло больше 2 секунд
echo "Тут сложный скрипт"; // Выполняем скрипт
}
else echo "Хватит постоянно обновлять страницу!"; // Выводим сообщение об ошибке
?>
Теперь если Вы попробуете понажимать F5, то обнаружите, что выводится сообщение "Хватит постоянно обновлять страницу!". Однако, если Вы будете делать перерывы (как обычный пользователь), а не кликать каждую секунду, то никаких проблем не возникнет.
Вот такая простая защита от F5. И обязательно отмечу, что это ни в коем случае не защита от умышленной атаки. Поскольку идентификатор сессии хранится у пользователя, соответственно, злоумышленник его просто не будет отправлять, и скрипт будет всегда выполняться. Впрочем, про защиту от DDOS я уже писал.
Вот так можно защитить сервер от нетерпеливых посетителей и облегчить ему жизнь, правда, усложнив её самим посетителям, поэтому я такой скрипт у себя на сайтах не использую.
-
- Михаил Русаков
Комментарии (4):
Михаил, пожалуйста добавьте к полю, где находится код вставки кнопки атрибут contenteditable="false", потому что если нечаянно нажать Delete, то чтобы код опять появился, приходится перезагружать страницу!
Ответить
У меня вопрос по этому скрипту! Если обновлять страницу и скрипт будет срабатывать то нагрузка на сервер все равно будет или ты высвечивании "Хватит постоянно обновлять страницу!" нагрузка не идет?
Ответить
Она минимальна.
Ответить
А можно ли реализовать такую штуку на защиту от POST запросов на стороннюю страницу?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.