Защита скрипта от ajax запросов с других серверов, разумно ли решение?

Друзья, есть ли смысл защищать php-скрипт, который выполняется через ajax с помощью такого условия?
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && preg_match("/site.ru/", $_SERVER['HTTP_REFERER'])) { 
код скрипта  
}

Основной вопрос по поводу последнего условия: preg_match("/site.ru/", $_SERVER['HTTP_REFERER'])..
Не ресурсозатратно ли оно? нет альтернатив?
Заранее спасибо..
  • Вопрос задан
  • 1258 просмотров
Пригласить эксперта
Ответы на вопрос 3
Deodatuss
@Deodatuss
вики говорит что еще для каждого юзера можно генерить свой секретный ключ который отправляется с запросом
Ответ написан
Комментировать
shaks
@shaks
всё что вы написали ерунда полная. Все заголовки легко выставляются любым скриптом, в том числе и REFERRER
По поводу вопроса
- нет, не ресурсоемко
- есть альтернатива strpos substr и тд

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

PS А зачем вам такая "защита" ? любопытно просто, я попытался придумать ситуацию когда это нужно и необходимо, но так и не смог придумать )
Ответ написан
Denormalization
@Denormalization
HTTP_REFERER - ненадежный заголовок. Его можно подменить на нужный.
Если стоит задача защитить от любых запросов(не только из браузера), то проверка referer не поможет.
Если стоит задача защитить от запросов из браузеров - проще настроить CORS + использовать CSRF токенты для POST/PUT/DELETE
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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