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