Posso fidarmi dell'intestazione Host ricevuta nella richiesta?

3

La domanda è molto semplice: posso fidarmi del valore dell'intestazione Host?

Stiamo sviluppando un'applicazione che serve alcune risorse via HTTP e non desideriamo avere alcuni servizi privati e altri pubblici.

Abbiamo domini interni come "backoffice.xxxx.com" ai quali è possibile accedere solo internamente e abbiamo altri domini a cui è possibile accedere da qualsiasi luogo.

Per essere più specifici, questo caso riguarda un'applicazione che serve le immagini. Quindi possiamo avere un percorso come "/ pictures / xxxx" tramite GET e serve l'immagine con quell'ID a chiunque voglia vederla. Ma abbiamo anche mappato il percorso "/ pictures" via POST per caricare nuove immagini e non vogliamo che nessuno possa caricare immagini.

Ciò che pensiamo è che possiamo utilizzare l'intestazione Host per convalidare la richiesta e negare a coloro che provengono da domini pubblici (o semplicemente consentire domini interni e negare qualsiasi altro).

Quali altre opzioni abbiamo per convalidare queste richieste? (Se l'intestazione dell'Host non è abbastanza sicura).

    
posta Pablo Matias Gomez 27.01.2016 - 14:48
fonte

2 risposte

5

No.

È banale cambiare il valore dell'intestazione dell'host, ma, a seconda della configurazione del server, ciò potrebbe impedire al sito di funzionare come previsto. In particolare, se si utilizzano host virtuali basati sul nome, il server Web esaminerà l'intestazione host per determinare quale sito (di molti) caricare e (di solito) predefinito per il primo definito se non riconosce l'host intestazione.

Se disponi di una rete interna, presumibilmente avrai un intervallo di indirizzi IP interni. È possibile limitare l'accesso alle funzioni in base a ciò, sebbene le impostazioni specifiche dipendano dal server Web in uso. Si potrebbe anche considerare avere LDAP o un'autorizzazione centralizzata simile, quindi solo le richieste degli utenti interni che hanno effettuato l'accesso in qualche modo possono fornire un'intestazione di autorizzazione. Questo è l'ideale se utilizzi un dominio Windows: potresti anche essere in grado di accedere automaticamente alle funzioni di amministrazione in questo caso, in base all'utente connesso sul computer.

    
risposta data 27.01.2016 - 14:57
fonte
4

L'intestazione host sarà il nome host del tuo server web e verrà utilizzata solo nelle richieste HTTP dei client. Non può essere utilizzato per convalidare se la fonte è autorizzata a caricare immagini o meno. Svilupperei un meccanismo di accesso al quale gli utenti possono autenticare (possibilmente con un servizio di directory, come menzionato da Matteo) e, se autorizzato, caricare nuove immagini. Rifiuta tutti gli altri accessi alla pagina web mappata a / immagini. In combinazione con SSL / TLS e solida gestione delle password, questa è la soluzione più controllabile e sicura.

    
risposta data 27.01.2016 - 15:32
fonte

Leggi altre domande sui tag