iam_not_a_robot
@iam_not_a_robot

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

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

Посмотрел $_SERVER но не особо понятно по какому именно параметру из имеющихся лучше всего фильтровать запросы...
  • Вопрос задан
  • 308 просмотров
Решения вопроса 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 токен хотябы
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы