Осмотреть реферера в PHP
Можно ли проверить, кто входит на ваш сайт в PHP. У меня есть веб-приложение (написанное на PHP), которое разрешает вход только пользователям с определенных веб-сайтов. Можно ли получить реферальные сайты, изучив _Request
объект? Если да, то как?
4 ответа
Да, но имейте в виду, что некоторые прокси и другие вещи удаляют эту информацию, и ее легко подделать. Поэтому никогда не полагайтесь на это. Например, не думайте, что ваше веб-приложение защищено от CSRF, потому что вы проверяете реферер на соответствие вашему собственному серверу.
$referringSite = $_SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ?
Если вы хотите разрешить запросы только от определенного домена, вам нужно проанализировать некоторые URL-адреса, чтобы получить домен верхнего уровня. Как я узнал больше, это можно сделать с помощью PHP parse_url ().
Как отмечает в комментариях andyk, вам также нужно будет разрешить доступ к www.example.com и example.com.
Пока вы можете посмотреть на $_SERVER['HTTP_REFERER']
чтобы получить ссылающийся сайт, не ставьте на него ферму. Браузер устанавливает этот заголовок, и он легко подделывается.
Если крайне важно, чтобы ваш сайт просматривали только люди, пришедшие от конкретных реферралов, не используйте этот метод. Вам нужно будет найти другой способ, например, базовую аутентификацию, защитить свой контент. Я не говорю, что вы не должны использовать эту технику, просто имейте в виду, что она не защищена от глупостей.
Кстати, вы также можете блокировать рефереры на уровне apache, используя mod_rewrite.
Вы не можете доверять рефереру. Несмотря на то, что из $_SERVER
массив, на самом деле это значение, предоставленное пользователем / браузером, и его легко подделать, используя такие вещи, как дополнение Firefox RefControl.
Вам нужно проверить массив $_SERVER для ключа 'HTTP_REFERER'.