Это информация, отправленная клиентом. Обычно это страница, на которой вы щелкнули ссылку.
Это также может быть подделано. Вы можете сделать это самостоятельно, установив HEADER в запросе PHP cURL.
curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
'Host: www.google.com',
'Referer: http://google.com/',
'FaKeHEADER: ThisIsFakeButItWillBeSentAnyways'));
Принимающий сервер увидит их в заголовке, даже если он никогда не был отправлен с google.com. Вы также можете подделать все остальное, что вы увидите в заголовке (пользовательские агенты, файлы cookie и т. д.).
Вам будет трудно обнаружить поддельные заголовки, если вы точно не знаете, как каждый из них должен выглядеть из каждого источника. Лучшее, что вы можете сделать, это работать с IP-адресами и ограничивать типы заголовков, которые вы принимаете (например, если страница может использовать только запросы GET, отклоняйте все запросы POST). Даже тогда, если кто-то захочет обмануть вас, скорее всего, они это сделают, а вы об этом не узнаете.
Если вы пытаетесь защитить соединение между двумя вашими сайтами, вы должны ограничить соединение более чем одним заголовком, это совсем не безопасно.
Редактировать: вы даже можете отправлять действительно поддельные заголовки. Я обновил пример, чтобы показать, что я имею в виду. Некоторые сайты используют пользовательские (например, поддельные) заголовки для прохождения аутентификации.
person
PiZzL3
schedule
28.03.2011