Безопасная форма ajax POST - PullRequest
3 голосов
/ 22 мая 2010

Мне было интересно, как разработать безопасную форму сообщения через AJAX.

Например, у меня есть:

Моя HTML-форма.

Мой JavaScript обрабатывает отправку.

URL-адрес отправки "post_data.php"

Опубликованные данные:

id=8&name=Denis

PHP проверяет, являются ли переменные id и name POSTED и их тип данных. Если все в порядке, продолжайте делать некоторые вещи в базе данных.

У меня вопрос: как я могу запретить кому-либо создавать свою собственную HTML-форму вне моего веб-сайта или что-то еще и публиковать ложные данные в моем PHP-скрипте?

Представьте, что в моей базе данных действительно есть данные, это может быть плохо.

Спасибо

Ответы [ 2 ]

7 голосов
/ 22 мая 2010

Один из наиболее распространенных способов сделать это - добавить токен в поле <hidden> формы и сохранить его в переменной сеанса (или в другом месте) на вашем сервере. Когда сообщение отправлено, вы проверяете, что токен действителен.

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

Так работает, например, встроенная поддержка ASP.NET MVC.

1 голос
/ 03 января 2011

Метод токенов, вероятно, самый эффективный. С учетом вышесказанного никогда не следует предполагать, что данные поступают из вашей собственной формы, даже если у вас есть другие меры безопасности. Проверка данных всегда будет важна.

...