Как сервер может проверять запросы ajax не с сайта, X-Requested-With

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

Вы можете проверить это вот так …

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

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

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

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

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