Совет по безопасности для поста данных jquery ajax? - PullRequest
21 голосов
/ 02 сентября 2008

Я использую jquery ajax для публикации обновлений на моем сервере. Я беспокоюсь о том, чтобы убедиться, что принял соответствующие меры, чтобы только мои вызовы AJAX могли публиковать данные.

Мой стек - это PHP на Apache с бэкэндом MySQL.

Совет с благодарностью!

Ответы [ 2 ]

28 голосов
/ 02 сентября 2008

Любой запрос, который могут быть сделаны вызовами AJAX на ваших страницах, также может быть сделан кем-то за пределами приложения. Если все сделано правильно, вы не сможете определить, были ли они сделаны как часть вызова AJAX из вашего веб-приложения или вручную / другими способами.

Есть два сценария, о которых я могу подумать, о которых вы можете говорить, когда говорите, что хотите убедиться, что только ваши AJAX-вызовы могут публиковать данные: либо вы не хотите, чтобы злонамеренный пользователь мог публиковать данные, которые вмешивается в данные другого пользователя, или вы действительно хотите ограничить публикацию в «потоке» операции с несколькими запросами.

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

Если вы обеспокоены вторым случаем, вам придется делать что-то вроде выдачи уникального токена на каждом этапе процесса и сохранять ожидаемый токен на стороне сервера. Затем, когда сделан запрос, убедитесь, что на стороне сервера имеется соответствующая запись о предпринимаемом действии и что ожидаемые токены совпадают и этот токен еще не использовался. Если нет, вы отклоняете запрос, если он есть, вы помечаете этот токен как использованный и обрабатываете запрос.

Если то, что вас беспокоит, является чем-то отличным от одного из этих двух сценариев, то ответ будет зависеть от большего количества деталей, чем вы предоставили.

5 голосов
/ 02 сентября 2008

Используйте сеансы, чтобы убедиться, что все сообщения Ajax выполняются в аутентифицированном контексте. Думайте о своем Ajax-коде как о другом клиенте на вашем сервере, таким образом становится проще решать проблемы аутентификации.

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