Какие элементы массива $_SERVER являются уязвимыми для подделки?

pugalo

Новичок
То тут то там попадаются предупреждения что тот или иной элемент массива $_SERVER может быть подделан/содержать не то, что ожидали и т.п.
Существует ли собранный в одном месте список рекомендаций по этому массиву, какие его элементы являются опасными, желательно с объяснением - почему, или наоборот, тех, на которые можно полагаться на 100% или хотя бы на 99,99%? Или другими словами, какие из элементов могут быть искажены злоумышленниками, а до каких они не могут достучаться (серьезные взломы, например сервера на хостинге не рассматриваю). Мне не попадался такой список в инете...
Я так понимаю в первую очередь под наблюдением должны находится значения, которые попадают в массив из адресной строки:
$_SERVER['HTTP_REFERER']
$_SERVER['PHP_SELF'] - XSS инъекция
Также иногда упоминают $_SERVER['HTTP_USER_AGENT']
Что еще?
Мне даже попадались мнения про $_SERVER['DOCUMENT_ROOT'] и еще что-то, что мне уже не понятно.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Все, что в массиве $_SERVER начинается с HTTP_* можно подделать.
 

pugalo

Новичок
Даже в $_SERVER['HTTP_HOST']?
Хотите сказать в скрипте, запущенном на host.ru, может оказаться $_SERVER['HTTP_HOST'] != 'host.ru'?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Даже в $_SERVER['HTTP_HOST']?
Хотите сказать в скрипте, запущенном на host.ru, может оказаться $_SERVER['HTTP_HOST'] != 'host.ru'?
От веб-сервера зависит. Как правило, до PHP просто НЕ дойдет запрос с неверным HTTP_HOST, т.к. веб-сервер его в большинстве случаев откинет, и поэтому на него можно ориентироваться. Однако, в какой нибудь конфигурации типа один хост на один ип-адрес обрабатывающийся дефолтным хостом без имени, можно получить что угодно, посланное клиентом. И, да, $_SERVER['HTTP_HOST'] может не совпадать с $_SERVER['SERVER_NAME'] вполне.
 

WMix

герр M:)ller
Партнер клуба
что содержимое переменной, берется из запроса броузера, и если запрос дошел до сервера, то в HTTP_HOST будет указанно то что написал браузер клиента или другими словами можно манипулировать!
 

флоппик

promotor fidei
Команда форума
Партнер клуба
что содержимое переменной, берется из запроса броузера, и если запрос дошел до сервера, то в HTTP_HOST будет указанно то что написал браузер клиента или другими словами можно манипулировать!
Рекомендую все же перед своим ответом читать ответы других пользователей. И не надо будет писать вещи, которые уже озвучены, и в некоторых случаях не будешь выглядеть глупо.
 
  • Like
Реакции: AmdY

флоппик

promotor fidei
Команда форума
Партнер клуба
Вообще, стоит понимать, что в вебе 95% всех действий происходит на основании данных, полученных от пользователей, и это нормально. Поэтому от них надо не «защищаться» а всего лишь правильно обрабатывать, что бы избежать неверной трактовки или отображения этих данных.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
флоппик, контраргумент: лучше 1 строка из rfc, чем 5 строк от себя ;)
 
Сверху