Каков наиболее надежный и безопасный способ определить, какая страница отправила или вызвала (через AJAX) текущую страницу. Я не хочу использовать $_SERVER['HTTP_REFERER']
из-за (недостаточной) надежности, и мне нужно, чтобы вызываемая страница исходила только от запросов, исходящих с моего сайта.
Изменить: я хочу убедиться, что сценарий, который выполняет серию действий, вызывается со страницы на моем веб-сайте.
php
http-referer
UnkwnTech
источник
источник
$_SERVER[REMOTE_ADDR]
.Ответы:
REFERER отправляется браузером клиента как часть протокола HTTP и поэтому действительно ненадежен. Его может не быть, он может быть подделан, ему просто нельзя доверять, если это из соображений безопасности.
Если вы хотите проверить, поступает ли запрос с вашего сайта, вы не можете, но вы можете подтвердить, что пользователь был на вашем сайте и / или прошел аутентификацию. Файлы cookie отправляются в запросах AJAX, поэтому вы можете на это положиться.
источник
Что я нашел лучше всего, так это токен CSRF и сохраните его в сеансе для ссылок, где вам нужно проверить реферер.
Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:
Тогда index.php будет выглядеть так:
Я знаю безопасные сайты, которые делают то же самое для всех своих защищенных страниц.
источник
$_GET['token'] == $_SESSION['token']
и нет$_GET['token'] !== $_SESSION['token']
?Использование $ _SERVER ['HTTP_REFERER']
источник
Нет надежного способа проверить это. Клиент действительно может рассказать вам, откуда он. Вы можете представить себе использование файлов cookie или информации о сеансах, размещенных только на некоторых страницах вашего веб-сайта, но это может нарушить работу пользователя с закладками.
источник
У нас остался только один вариант после прочтения всех проблем с фальшивым реферером: т.е. страница, которую мы хотим отслеживать как реферер, должна оставаться в сеансе, и как ajax вызывается, а затем проверять в сеансе, имеет ли она значение страницы реферера, и выполнять действие в противном случае нет действие.
С другой стороны, когда он запрашивает любую другую страницу, тогда значение сеанса реферера становится нулевым.
Помните, что переменная сеанса устанавливается только при запросе страницы желания.
источник