sicurezza variabili $_SERVER['DOCUMENT_ROOT'], $_SERVER['HTTP_HOST']

Buongiorno a tutti, sarei grato se qualcuno potesse aiutarmi a chiarire un dubbio relativo alla sicurezza.

Per garantire portabilità ad una piccola applicazione, in alcune path (es. con require o con href ) sto utilizzando le variabili $_SERVER['DOCUMENT_ROOT'] e $_SERVER['HTTP_HOST'].   So che con alcune variabili server, es. $_SERVER['PHP_SELF'], è indispendabile effettuare l'escape: mi viene appunto il dubbio che anche le prime due possano essere soggette a manipolazione malevola e che sia dunque necessario prevederne l'escape. Se fosse così, avete qualche suggerimento? Grazie.

inviato 4 anni fa
janszoon
X 1 X

Dalla documentazione ufficiale si evince che DOCUMENT_ROOT viene desunto dal file di configurazione del web server mentre HTTP_HOST non è altro che il valore dell'header "HOST" della request, quindi proviene direttamente dal browser dell'utente, come tutti i parametri che iniziano per HTTP_.

Il primo parametro quindi è piuttosto sicuro mentre sul secondo non coniene fare troppo affidamento e preferire invece l'uso di $_SERVER['SERVER_NAME'].

risposto 4 anni fa
Gianni Tomasicchio
Ringrazio coloro che hanno preso in considerazione il mio quesito con il loro suggerimento. Nel frattempo ho cercato un po' e mi permetto di condividere quanto ho trovato qui http://stackoverflow.com/questions/6474783/which-server-variables-are-safe e qui http://shiflett.org/blog/2006/mar/server-name-versus-http-host. Taluni sottolineano l'opportunità di "filtrare" comunque tutte le variabili $_SERVER, in quanto fonti esterne. Vedo che funzioni tipo htmlentities() non sono escape XSS risolutivi. Penso ad alternative "statiche " con Regex o in_array() . Idee su qualcosa di più "leggero"?janszoon 4 anni fa
X 0 X

Ma SERVER_NAME da il nome dell'host sotto il quale lo script (lato server) sta girando, quindi a meno di qualche tipo di configurazione particolare (sul manuale si fa riferimento a un virtual host) è un parametro che si conosce già. Sto su phpnews.it lo so e $_SERVER['SERVER_NAME'] mi ritorna proprio phpnews.it

risposto 4 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda