насколько безопасен $_SERVER[HTTP_HOST]?

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

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

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

Можно ли его изменить внешне?

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

Это правда?


person AlexMorley-Finch    schedule 27.04.2012    source источник
comment
возможный дубликат Какие переменные $_SERVER безопасны?   -  person mellamokb    schedule 27.04.2012
comment
Пожалуйста, не закрывайте это как обман, теперь это циклическая ссылка, так как я ссылаюсь на Which $_SERVER безопасны ли переменные? здесь для подробного объяснения HTTP_HOST.   -  person deceze♦    schedule 27.04.2012
comment
Возможный дубликат В чем разница между HTTP_HOST и SERVER_NAME в PHP?   -  person    schedule 09.04.2018


Ответы (1)


$_SERVER["HTTP_HOST"] — это заголовок HTTP Host, отправленный клиентом. Это делает этот заголовок в целом небезопасным.

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

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

person deceze♦    schedule 27.04.2012
comment
Вы должны добавить кое-что из этого в свой исчерпывающий ответ о обмане. Вы специально не объясняете часть VirtualHost. - person Michael Berkowski; 27.04.2012
comment
Готово, сослался на этот ответ от другого. :) - person deceze♦; 27.04.2012
comment
Обратите внимание, что это известные способы обхода ограничения VirtualHost, такие как использование абсолютного URI в HTTP-запросе, что приводит к бесплатному заголовку Host. Таким образом, в целом небезопасно очень верно. - person regilero; 05.09.2014