how safe is $_SERVER["HTTP_HOST"]?
Asked Answered
S

1

8

I have a database full of website urls, the primary key is the $_SERVER["HTTP_HOST"] of the website.

When a user navigates to ... lets say www.my-epic-example-url.com, It will connect the the database and use the $_SERVER["HTTP_HOST"] of that websites, then fetches all the data referencing that website!

What I want to know is, how safe is $_SERVER["HTTP_HOST"] ?

Can it be externally modified?

The only reason i ask is because i read an artical a while back ( cant remember where it was ) saying be careful when using $_SERVER because it is unsafe...

Is this true?

Stribling answered 27/4, 2012 at 12:27 Comment(3)
possible duplicate of Which $_SERVER variables are safe?Fetter
Please don't close this as dupe, it's now a circular reference since I am linking from Which $_SERVER variables are safe? to here for a detailed explanation of HTTP_HOST.Provide
Possible duplicate of What is the difference between HTTP_HOST and SERVER_NAME in PHP?Maurreen
P
20

$_SERVER["HTTP_HOST"] is the HTTP Host header, as sent from the client. That makes this header generally unsafe.

But, if you are in a typical virtual host setup in which the web server decides which script to execute based on VirtualHost configurations, which in turn are triggered by the HTTP Host header, your script should not get executed unless a known, whitelisted value was received in that header.

If the web server does not care about the Host header and executes a certain script for any and all requests, then this value could be absolutely anything.

Provide answered 27/4, 2012 at 12:35 Comment(3)
You ought to add some of this into your comprehensive answer on the dupe. You don't specifically explain the VirtualHost part there.Shinar
Done, referred to this answer from the other. :)Provide
Note that they are known ways of bypassing the VirtualHost restriction, like using absolute URI in the HTTP request, this leads to a free-to-play Host header. So the generally unsafe is very true.Clockwise

© 2022 - 2024 — McMap. All rights reserved.