iam_not_a_robot
@iam_not_a_robot

Как разрешить отвечать только аяксу?

Есть страница site.com/response.php на которую приходят get-запросы от ajax
Вопрос: как запретить ей отвечать на любые другие get-запросы кроме моего ajax потому что можно поставить site.com/response.php?id=xx и сделать запрос напрямую.

Посмотрел $_SERVER но не особо понятно по какому именно параметру из имеющихся лучше всего фильтровать запросы...
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
Adamos
@Adamos
Вариант 1. Формированием уникального ключа на той странице, с которой идет ajax-запрос, и проверкой его в ajax-скрипте.
Вариант 2. Проверкой, посетил ли этот конкретный пользователь ту страницу непосредственно перед тем, как отправлен запрос. Не исключено, что вам достаточно просто убедиться, что пользователь авторизован, чтобы отсеять роботов.
А то, что пришло в скрипт без участия сервера, всегда можно подделать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@strelov1
function IsAjax(){
	    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
	        strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
	}

Но как метод защиты очень слабый, такие заголовки легко подделываются, нужно еще генерировать CSRF токен хотябы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы