Как реализовать общие токены CSRF с помощью JQuery AJAX? - PullRequest
0 голосов
/ 06 декабря 2011

В настоящее время я разрабатываю код jquery, который отправляет данные на сервер через ajax, который затем вставляется в базу данных на основе параметров запроса.

Тем не менее, я весьма обеспокоен тем, что это может быть использовано злоумышленниками CSRF, которые могут сделать вещи небезопасными. Я попытался исследовать это и найти ответы только для конкретных сред, таких как django и rails, где я нахожусь только после общей реализации для использования с PHP.

Я прочитал, что вы можете использовать функцию JQuery.ajaxsend () для реализации кода, чтобы токен отправлялся с каждым запросом AJAX, однако я не представляю, как это можно реализовать, поскольку JavaScript, очевидно, не имеет доступа к PHP переменные сеанса. Будет ли использование куки достаточно безопасным?

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

Если кто-нибудь может указать мне правильное направление, это будет наиболее ценно!

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Вот как это делается в Django, но нет ничего, что специфично для фреймворка (кроме установки токена CSRF в куки как 'csrftoken'): https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#ajax

1 голос
/ 06 декабря 2011

Хорошо, вы знаете, что $.ajax, похоже, отправляет куки, включая куки сессии PHP, со своим запросом. Использование этой функции меняет вашу атаку с CSRF на захват сеанса, но это только начало. Затем, если вы можете избежать перехвата сеанса, запустите службу через SSL.

Я уверен, что есть и другие способы сделать это, но для ванильного PHP это работает. Кто-нибудь исправит меня, если я ошибаюсь, пожалуйста.

...