Как сервер может проверять ajax-запросы не с сайта, X-Requested-With - PullRequest
5 голосов
/ 08 февраля 2011

Я прочитал, что проверка заголовка X-Requested-With запроса ajax является хорошим способом убедиться, что запрос не поступает извне. На стороне сервера, как я могу проверить этот заголовок? и как правильно реагировать на отсутствие или неправильность этого заголовка (перенаправление, исключение исключения, другое)?

Ответы [ 2 ]

8 голосов
/ 08 февраля 2011

Вы можете проверить это следующим образом ...

$isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
          strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';

Если вы только ожидаете доступа через XHR, то просто exit, если этот заголовок отсутствует.

Примечание : этот заголовок тривиален для подмены.Не полагайтесь на это ни на что, кроме , похоже, оно исходит от XHR .

7 голосов
/ 23 ноября 2011

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

Дополнительная информация: http://en.wikipedia.org/wiki/Cross-site_request_forgery

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