2011-11-09 9 views
50

C'è un modo per leggere un cookie sicuro con javascript? Ho provato a farlo usando document.cookie e per quanto posso vedere qui http://securitymusings.com/article/909/secure-cookies-the-httponly-flag Non riesco ad accedere a un cookie sicuro in questo modo.Come leggere un cookie sicuro utilizzando JavaScript

Qualcuno può offrirmi una soluzione alternativa?

+1

Da [wiki] (http://en.wikipedia.org/wiki/HTTP_cookie): un cookie sicuro viene utilizzato solo quando un browser visita un server tramite HTTPS. –

+3

@Pavel Hodek Questa è la bandiera sbagliata. Il flag "sicuro" del cookie non ha nulla a che fare con il flag di sicurezza HTTPOnly. Hanno un terribile sistema di denominazione. – rook

risposta

68

Flag diversi enable different security measures when the HTTPOnly flag impostato. Ad esempio, Opera e Safari non impediscono a javascript di scrivere sul cookie. Tuttavia, la lettura è sempre vietata sull'ultima versione di tutti i principali browser.

Ma ancora più importante perché si desidera leggere un cookie HTTPOnly? Se sei uno sviluppatore, basta disabilitare la bandiera e assicurati di avere test your code for xss. Ti consiglio di evitare di disabilitare questo flag se possibile. Il flag HTTPOnly e "flag sicuro" (che obbliga il cookie ad essere inviato su https) dovrebbero sempre essere impostati.

Se sei un attaccante , poi si desidera dirottare una sessione. Ma c'è un modo semplice per dirottare una sessione nonostante il flag HTTPOnly. Puoi ancora guidare sulla sessione senza conoscere l'ID della sessione. Lo MySpace Sammy worm ha fatto proprio questo. Ha usato un XHR per leggere un token CSRF e quindi eseguire un'attività autorizzata. Pertanto, l'utente malintenzionato potrebbe eseguire quasi tutto ciò che l'utente registrato potrebbe fare.

Le persone hanno troppa fiducia nel flag HTTPOnly, XSS può ancora essere sfruttabile. È necessario impostare le barriere attorno alle caratteristiche sensibili. Ad esempio, la password di modifica archiviata dovrebbe richiedere la password corrente. La capacità di un amministratore di creare un nuovo account dovrebbe richiedere un captcha, che è un CSRF prevention technique che non può essere facilmente aggirato con un XHR.

+0

Potresti per favore approfondire la cosa del worm? Quel collegamento non funziona e in realtà non capiva molto da internet. Grazie. –

+0

@Abhishek Jebaraj Se non si capisce il worm sammy o i token CSRF, provare prima a capire i limiti della [policy della stessa origine] (https://developer.mozilla.org/en-US/docs/Web/Sicurezza/Same-origin_policy) – rook

27

L'intero punto dei cookie HttpOnly è che non è possibile accedervi da JavaScript.

L'unico modo (ad eccezione dello sfruttamento dei bug del browser) affinché lo script li legga è quello di avere uno script cooperativo sul server che leggerà il valore del cookie e lo riporterà come parte del contenuto della risposta. Ma se puoi e vorresti farlo, perché usare i cookie HttpOnly in primo luogo?

+0

questo dovrebbe essere quello. – steo

+0

È possibile testarlo per sapere se il browser dell'utente gestisce correttamente HttpOnly per i cookie prima di consentire all'utente di utilizzare il sito dal browser specifico. Sto cercando un esempio che possa assicurare il supporto del browser della flag HttpOnly. MS consiglia anche di farlo, ma non ci sono ulteriori consigli su come: [Mitigare XSS con HttpOnly] (https://msdn.microsoft.com/en-us/library/ms533046.aspx#httponly) – Ursegor

+0

Ho trovato che elenco di consigli di browser versione bianca. Potrei sbagliarmi, ma non sarebbe un modo conveniente per controllare il supporto da JavaScript invece? Potresti suggerire qualche drawbak su questo? – Ursegor

Problemi correlati