Protezione contro XSS quando si impostano cookie basati su URI?

0

Ho un sito web scritto in nginx.conf - link - che accetta essenzialmente due parametri, un sistema operativo e un nome di pagina manuale e reindirizza a un sito diverso in base ai parametri nell'URL.

Poiché l'intenzione è che il sito sia navigato e utilizzato direttamente dalla barra Location del browser, ogni personaggio conta e voglio rendere possibile un location che imposti un cookie attraverso un normale % richiesta diGET, in modo tale che ulteriori richieste di pagine manuali possano essere eseguite senza specificare un sistema operativo.

Tuttavia, mi sono reso conto che se impostassi incondizionatamente una preferenza / cookie in base a un parametro nell'URL, renderei il mio sito soggetto a XSS, poiché qualsiasi altra pagina Web potrebbe costruire un URL di impostazione dei cookie dannoso e caricarlo sullo sfondo, modificare i cookie per il mio sito e rompere il paradigma di sicurezza.

Qual è la soluzione? Non posso impostare i cookie in modo sicuro in una lingua come nginx.conf che non contiene stato tra le richieste?

    
posta cnst 13.03.2013 - 07:02
fonte

2 risposte

0

Sembrerebbe che la soluzione sia fornire all'utente una pagina intermedia dopo aver inserito l'URL di impostazione dei cookie.

In questa pagina, fornisci semplicemente un link a se stesso.

Entro nginx.conf , controlla $http_referer in location di tale pagina; se corrisponde a $request_uri , imposta il cookie; altrimenti, pubblica la pagina con il link a sé stessa, con Cache-Control: no-cache .

Questa soluzione si basa sull'idea che non è possibile modificare l'header Referer HTTP (tramite JavaScript o altro) nelle richieste eseguite dai browser web.

Sarebbe persino immune anche se fosse possibile accedere a socket TCP grezzi da JavaScript ( i socket non elaborati dal JavaScript del browser Web non sono possibili per motivi di sicurezza) e crea le tue richieste personalizzate, perché anche allora tali socket sarebbero presenti in un dominio separato rispetto a le richieste HTTP dal motore del browser Web stesso, e le risposte non sarebbero trattate come HTTP e non sarebbero in grado di impostare alcun cookie.

    
risposta data 13.03.2013 - 07:02
fonte
0

Dato che ci sono solo poche versioni BSD, puoi facilmente fare white-listing sul server. Imposta il cookie solo se "Versione OS" corrisponde alle versioni del sistema operativo consentite. Se il controllo fallisce, reindirizza l'utente alla radice del documento del tuo sito web.

Non vedo perché questo sarebbe un attacco XSS poiché il cookie modificato non viene letto e utilizzato da nessuna parte sul lato client con JavaScript. Se mi sbaglio, per favore dimmelo.

    
risposta data 13.03.2013 - 21:27
fonte

Leggi altre domande sui tag