Комментарии 22
Поместил в WEB-разработку, полагаю наиболее подходит.
0
Мне кажется в некоторых случая достаточно будет md5-хеша не изменяемых данных транзакции (например, без учета id и даты времени).
0
НЛО прилетело и опубликовало эту надпись здесь
В чем прикол? Чем не подошел обычный редирект без этого бубна?
0
Вот вот.
После обработки формы сделать редирект на другую страницу можно ведь.
После обработки формы сделать редирект на другую страницу можно ведь.
-1
Защита от невыполнения редиректа. Не разу разьве не видели, когда отправляешь форму, браузер зависает в режиме «скачано 0/0». Данные POST уже отправлены, а результаты выполнения скрипта, и Ваш редирект планируемый браузер не взял. Случается такое с не очень качественным интернетом, тем же gprs. Не дождавшись результата — пользователь может обновить страницу, остановить и иобновить — и данные передадутся вновь, и никакой редирект не спасет.
Ну конечно, в говнокодинге это лишнее, используйте редирект.
Ну конечно, в говнокодинге это лишнее, используйте редирект.
0
То что Вы предлагаете реализовать на самом деле является классической защитой от CSRF.
+3
Не только от CSRF.
Я так отшиваю тупых спамботов, которые пытаются кидать свои запросы минуя страницу с формой.
В моём случае это 98% всего спама, так что метод оказывается очень эффективен.
Я так отшиваю тупых спамботов, которые пытаются кидать свои запросы минуя страницу с формой.
В моём случае это 98% всего спама, так что метод оказывается очень эффективен.
0
А это тоже CSRF — сейчас этот термин несколько расширен и, конечно, правильнее было бы просто RF. Метод не просто эффективный, а вообще непробиваемый, как показала моя практика.
0
А почему нельзя ключ хранить в $_SESSION?
0
Не понимаю зачем такие сложности с «уникальным ключом» и всё такое… Всё проще! При переходе на страницу формы делаем:
//не забудьте проинициализировать сессию
$_SESSION[«formId12345InputAllowed»] = true;
При отправки в форму вот такой:
//не забудьте проинициализировать сессию
if($_SESSION[«formId12345InputAllowed»] == true)
{
unset($_SESSION[«formId12345InputAllowed»] );
// дальше то что вам нужно с формой этой делать
}
else
{
echo «error!»;
die();
}
Что нужно больше?? И никаких вам запросов в базу
//не забудьте проинициализировать сессию
$_SESSION[«formId12345InputAllowed»] = true;
При отправки в форму вот такой:
//не забудьте проинициализировать сессию
if($_SESSION[«formId12345InputAllowed»] == true)
{
unset($_SESSION[«formId12345InputAllowed»] );
// дальше то что вам нужно с формой этой делать
}
else
{
echo «error!»;
die();
}
Что нужно больше?? И никаких вам запросов в базу
-2
12345 — уникальный идентификатор каждой формы (типа 123 — для авторизации, 124 — для транзакциии тд), дабы позволить пользователям вбивать сразу в несколько форм одновременно…
0
Что нужно больше? Как Ваш метод защищает от долблений в форму ботов, которые не передают и не принимают печеньки?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Защита от повторной обработки POST запроса