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

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

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

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

Подскажите куда копать, за наглядный пример кода буду очень благодарен!
  • Вопрос задан
  • 3286 просмотров
Подписаться 9 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 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 передать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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