Как безопасно $_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 для любых и всех запросов, то это значение может быть абсолютно любым.