Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: dciccaleОтветов: 2

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

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

Моя HTML-форма.

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

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

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

id=8&name=Denis

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

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

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

Спасибо

formssecurityajaxpost

Ответы

Ответ 1 · рейтинг 7 · Tomas Aschan

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

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

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

Ответ 2 · рейтинг 1 · cjroth

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы