Насколько безопасен $_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
заголовок, как отправлено от клиента. Это делает этот заголовок в целом небезопасным.
Но если вы находитесь в типичной настройке виртуального хоста, в которой веб-сервер решает, какой сценарий выполнять на основе конфигураций VirtualHost, которые, в свою очередь, запускаются HTTP Host
header, ваш скрипт не должен выполняться, если в этом заголовке не было получено известное значение из белого списка.
Если веб-сервер не заботится о Host
заголовок и выполняет определенный сценарий для любых запросов, тогда это значение может быть абсолютно любым.