Безопасная форма ajax POST

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

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

Моя HTML-форма.

Мой JavaScript, обрабатывающий submit.

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

Размещенные данные:

id=8&name=Denis

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

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

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

Спасибо


person dciccale    schedule 22.05.2010    source источник


Ответы (2)


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

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

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

person Tomas Aschan    schedule 22.05.2010

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

person cjroth    schedule 03.01.2011