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

Другие вопросы по тегам