Вопрос по php – Насколько безопасен $ _SERVER [«HTTP_HOST»]?

6

У меня есть база данных, полная URL-адресов веб-сайтов, первичный ключ$_SERVER["HTTP_HOST"] веб-сайта.

Когда пользователь переходит к ... скажемwww.my-epic-example-url.com, Он подключит базу данных и использовать$_SERVER["HTTP_HOST"] этих сайтов, а затем получает все данные, относящиеся к этому сайту!

То, что я хочу знать, насколько безопасно$_SERVER["HTTP_HOST"] ?

Может ли он быть внешне модифицирован?

Единственная причина, по которой я спрашиваю, состоит в том, что я некоторое время назад читал статью (не помню, где это было), говоря, что будьте осторожны при использовании $ _SERVER, потому что это небезопасно ...

Это правда?

Пожалуйста, не закрывайте это как обман, теперь это круговая ссылка, так как я ссылаюсь сWhich $_SERVER variables are safe? здесь для подробного объясненияHTTP_HOST. deceze♦
Возможный дубликатWhat is the difference between HTTP_HOST and SERVER_NAME in PHP? user8438001
возможный дубликатWhich $_SERVER variables are safe? mellamokb

Ваш Ответ

1   ответ
15

$_SERVER["HTTP_HOST"] это HTTPHost заголовок, как отправлено от клиента. Это делает этот заголовок вообщеunsafe.

Но если вы находитесь в типичной настройке виртуального хоста, в которой веб-сервер решает, какой сценарий выполнять на основе конфигураций VirtualHost, которые, в свою очередь, запускаются HTTPHost заголовок, ваш скриптshould не выполняется, если в этом заголовке не было получено известное значение из белого списка.

Если веб-сервер не заботится оHost заголовок и выполняет определенный сценарий для любых запросов, тогда это значение может быть абсолютно любым.

Готово, сослался на этот ответ от другого. :)
Вы должны добавить это в свой исчерпывающий ответ на обман. Вы специально не объясняете часть VirtualHost там.
Обратите внимание, что они являются известными способами обхода ограничения VirtualHost, например использование абсолютного URI в HTTP-запросе, что приводит к свободному для воспроизведения заголовку хоста. Итакgenerally unsafe это очень верно.

Похожие вопросы