PHP, как не принимать get запрос с чужих сайтов?

Доброго времени суток, вопрос думаю и так понятен, есть скрипт который принимает параметру через GET запрос, например test.ru/script.php

нужно сделать так чтобы запрос отправленный с сайта
user.ru не обрабатывался вообще, только с test.ru

Подскажите куда копать, за наглядный пример кода буду очень благодарен!
  • Вопрос задан
  • 3278 просмотров
Пригласить эксперта
Ответы на вопрос 7
xzirrow
@xzirrow
Passionate Web developer inspired by modern techno
Можно узнать а зачем вообще нужно решить подобную задачу ?

Объясню почему спрашиваю - Если нужно сделать CSRF то лучше использовать токены (CSRF tokens) .
Защита от CSRF
Ответ написан
@iSensetivity
бухгалтер, програміст-самоук
Может, так?
В скрипте пропишите:
header('Access-Control-Allow-Origin: test.ru);
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
Ответ написан
Комментировать
@cloud-habr
$prov = getenv('HTTP_REFERER');//определяем страницу с который пришел запрос
		$prov = str_replace("www.","",$prov);//удаляем www если есть
		preg_match("/(http\:\/\/[-a-z0-9_.]+\/)/",$prov,$prov_pm);
//чистим адресс от лишнего, нам необходимо добиться ссылки вот такого вида http://xxxx.ru
		$prov = $prov_pm[1];//заносим чистый адрес в отдельную переменную
		$server_root = str_replace("www.","",$server_root);//удаляем www если есть

		if($server_root == $prov)
//если адрес нашего блога и адрес страницы с которой был прислан зарос равны
Ответ написан
mrsombre
@mrsombre
Веб-программист
Это невозможно сделать. Можно проверять http-referer у агента, но его легко подменить.
Ответ написан
Комментировать
deadbyelpy
@deadbyelpy
веб-шмеб
Хм, ок, если нужно только с сайта то просто по IP. Разрешенные - сам сайт, все остальные прочь.
Но тогда ни один пользователь у вас не сможет работать через GET
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если запрос к скрипту осуществляется через JS, можно добавлять дополнительные заголовки. Но это не 100% гарантия. Да и нету таких способов, которые бы дали 100% ую гарантию защиты от подобного.
Ответ написан
Комментировать
Veles123
@Veles123
эмм, я в php не силен, но, помню что в юзер агенте предается адрес сайта с которого ты пришел можно проверять адрес сайта с которого ты пришел. и если с него не нужно принимать get, тогда допустим обнулять все переменные, которые можно по get передать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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