Задать вопрос
iam_not_a_robot
@iam_not_a_robot

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

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

Посмотрел $_SERVER но не особо понятно по какому именно параметру из имеющихся лучше всего фильтровать запросы...
  • Вопрос задан
  • 357 просмотров
Подписаться 2 Оценить 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 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 токен хотябы
Ответ написан
Ваш ответ на вопрос

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

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