Целостность данных формы
Posted in: Усовершенствованные технологии использования форм, By: admin, At: Май 20th, 2008
В этом разделе обсуждаются методы, которые могут быть использованы для защиты данных, передаваемых в формы. Часто при работе с формами нужно передать данные в форме скрытых полей. Представим, например, что форма, с которой вы работаете, требует передачи введенной в нее информации на сервер в течение пяти минут. Если не использовать механизм сеансов (рассматривается в главе 6), то единственным доступным методом будет создание скрытого элемента формы, содержащего время создания формы, как показано в листинге 5.2.
Листинг 5.2. Пример формы, чувствительной к времени заполнения__
После отправки формы можно проверить время и убедиться, что значение скрытого элемента time меньше текущего времени, возвращаемого функцией time(), не более чем на 300 секунд (5 минут):
if (S_GET(’time’]+300 >= timed) ( echo “Слишком поздно!
“;
exit; ,
}
Главный недостаток такой системы заключается в том, что не существует способа проверить, что элемент времени, переданный на сервер, имеет ту же величину, что и величина, переданная при создании формы. При отправке формы в браузере пользователя отображается следующий URL-адрес:
http://somewhere.com/process.php?time=1037613504
Этот URL может быть легко изменен пользователем, с целью “отмотать время назад” и создать впечатление, что форма была создана двумя минутами ранее, чем на самом деле. Для этого достаточно добавить 120 (60*2) секунд в параметр времени URL:
http://somewhere.com/process.php?time=1037613684
В такой ситуации проверка данных будет очень полезной. Далее по тексту будет продемонстрировано, как использовать РНР для уверенности, что любые скрытые данные будут переданы так, как они были созданы.
Leave a Reply