Метод POST, Ajax и Безопасность? - PullRequest
3 голосов
/ 20 декабря 2009

Я использую Ajax (jQuery) и метод POST для обновления данных в базе данных. Я делаю следующее:

  • Получить данные из формы: user_id, entry_id, content, ...
  • Отправьте их на URL, который будет обрабатывать данные.
  • Если данные действительны, мы запишем их в нашу базу данных.

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

Ответы [ 2 ]

5 голосов
/ 20 декабря 2009

Вы пытаетесь защитить от CSRF атак.

Стандартной защитой является наличие в POST токена, который извлекается из другого запроса AJAX. Из-за междоменной защиты браузера Javascript, который находится за пределами вашего домена, не сможет получить токен.

1 голос
/ 20 декабря 2009

Здесь есть несколько вопросов:

  1. Аутентификация и авторизация пользователя, выполняющего операцию
  2. Защита от CSRF.

Решите, что вам нужно сделать. Первый должен обрабатываться файлами cookie, HTTP-аутентификацией (которую браузер также отправляет для запросов AJAX) или каким-либо пользовательским методом (например, дополнительный параметр, содержащий аутентификацию)

CSRF - это другое дело, но вы можете легко избежать этого, убедившись, что запрос действительно пришел через AJAX, а не через обычную форму-пост. Это должно быть достигнуто путем добавления дополнительного заголовка, который не может быть добавлен кем-либо путем создания формы HTTP (примечание: не все заголовки могут быть добавлены Javascript, попробуйте использовать X-заголовок).

Другая возможность заключается в том, чтобы вообще не использовать закодированный в форме пост; если вы ожидаете, что в теле будет JSON-объект, который не может быть получен с другого сайта, поскольку браузеры не будут отправлять его через HTTP POST в обычном режиме.

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