Осмотреть реферер в PHP

Можно ли проверить, кто входит на ваш сайт в PHP. У меня есть веб-приложение (написанное на PHP), которое должно разрешать пользователям вводить только некоторые веб-сайты. Можно ли получить сайты рефералов, исследуя объект _Request ? Если да, то как?

Solutions Collecting From Web of "Осмотреть реферер в PHP"

Да, но имейте в виду, что некоторые прокси и другие вещи отделяют эту информацию, и ее можно легко подделать. Поэтому никогда не полагайтесь на это. Например, не думайте, что ваше веб-приложение защищено от CSRF, потому что вы проверяете, что реферер соответствует вашему собственному серверу.

 $referringSite = $_SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ? 

Если вы хотите разрешать только запросы из определенного домена, вам нужно будет проанализировать некоторые URL-адреса, чтобы получить домен верхнего уровня. Как я узнал больше, это можно сделать с помощью parse_url () PHP.

Как отмечает andyk в комментариях, вам также придется разрешить доступ к http://www.example.com и example.com.

Хотя вы можете посмотреть $_SERVER['HTTP_REFERER'] чтобы получить ссылочный сайт, не делайте ставку на ферму. Браузер устанавливает этот заголовок, и его легко подделать.

Если критически важно, чтобы только люди, исходящие от определенных рефереров, просматривали ваш сайт, не используйте этот метод. Вам нужно будет найти другой способ, например, базовый auth, для защиты вашего контента. Я не говорю, что вы не должны использовать эту технику, просто имейте в виду, что это не безупречно.

BTW, вы также можете блокировать рефереры на уровне apache с помощью mod_rewrite .

Вы не можете доверять рефереру. Несмотря на то, что он поступает из массива $_SERVER , на самом деле это значение, предоставляемое пользователем / браузером, и легко подделывается, используя такие вещи, как аддон Firefox RefControl .

Вам нужно изучить массив $ _SERVER для ключа HTTP_REFERER.