Как безопасно $_SERVER [ "HTTP_HOST" ]?
У меня есть база данных, полная URL-адресов веб-сайтов, основным ключом является $_SERVER["HTTP_HOST"]
веб-сайта.
Когда пользователь переходит к... позволяет сказать www.my-epic-example-url.com
, он будет подключать базу данных и использовать $_SERVER["HTTP_HOST"]
на этих веб-сайтах, а затем извлекать все данные, ссылающиеся на этот сайт!
Что я хочу знать, насколько безопасно $_SERVER["HTTP_HOST"]
?
Может ли быть изменен извне?
Единственная причина, по которой я спрашиваю, это то, что я читал какое-то время назад (не помню, где это было), говоря, что будьте осторожны при использовании $_SERVER, потому что это небезопасно...
Это правда?
Ответы
Ответ 1
$_SERVER["HTTP_HOST"]
- это заголовок HTTP Host
, отправленный клиентом. Это делает этот заголовок вообще небезопасным.
Но если вы находитесь в типичной настройке виртуального хоста, в которой веб-сервер решает, какой script выполнить на основе конфигураций VirtualHost, которые, в свою очередь, запускаются заголовком HTTP Host
, ваш script не должен выполняются, если в этом заголовке не получено известное значение белого значения.
Если веб-сервер не заботится о заголовке Host
и выполняет некий script для любых и всех запросов, то это значение может быть абсолютно любым.