Come garantire che i cookie vengano sempre inviati tramite SSL quando si utilizza ASP.NET su IIS 7.5?

23

Firesheep ha portato alla ribalta la questione degli scambi di cookie non sicuri.

Come si può garantire che tutti gli scambi di cookie siano forzati a verificarsi solo tramite una connessione protetta da SSL al server quando comunichi a un utente web?

Il nostro scenario è che l'app Web è scritta in ASP.NET 4.0 e ospitata su Windows Server 2008 R2 con IIS 7.5 se ne restringe l'ambito.

    
posta cpuguru 08.01.2011 - 23:24
fonte

3 risposte

21

Puoi utilizzare app.config per forzarlo ; il formato è (nella sezione <system.web> )

<httpCookies domain="String"
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

quindi vuoi veramente, almeno

<httpCookies requireSSL='true'/>

Ma preferibilmente accenderai anche httpOnlyCookies, a meno che tu non stia facendo un javascript davvero accattivante.

    
risposta data 11.01.2011 - 00:34
fonte
19

Il modo più sicuro per proteggere il tuo sito da Firesheep (e attacchi correlati):

  • Sposta alla protezione SSL per tutto il sito : sposta l'intero sito su HTTPS e disabilita tutti gli accessi HTTP. In altre parole, proteggi tutto il tuo sito con SSL. Ecco altre risorse per farlo: come proteggersi da Firesheep , vantaggi e svantaggi di SSL a livello di sito , perché SSL protegge da Firesheep .

  • Imposta il flag SECURE su tutti i cookie : ogni volta che il server imposta un cookie, disponilo per impostare il flag SECURE sul cookie. Il flag SECURE indica al browser dell'utente di inviare solo questo cookie su connessioni SSL-secure (HTTPS); il browser non invierà mai un cookie SECURE su una connessione (non crittografata) (HTTP). Il passo più semplice è impostare questo flag su tutti i cookie utilizzati dal tuo sito.

Inoltre, ti consiglio alcuni passaggi aggiuntivi:

  • Fai attenzione ai contenuti di terze parti : i widget di terze parti, le raccolte e i contenuti possono rappresentare un rischio per la sicurezza. Se includi Javascript da terze parti (ad es. Tramite <SCRIPT SRC=...> ), ti consiglio di assicurarti che facciano riferimento agli URL HTTPS; altrimenti, stai esponendo la sicurezza del tuo sito agli attacchi attivi. (Vedi anche Domande frequenti di Jeremiah Grossman su widget di terze parti . ) Per evitare di inondare i tuoi utenti con > contenuti misti , ti consigliamo di assicurarti che tutto il contenuto, incluse immagini e librerie di terze parti, venga fornito anche tramite HTTPS.

Alcuni potrebbero obiettare che quanto sopra è eccessivo. In alcuni casi, potrebbe essere possibile proteggere contro Firesheep utilizzando SSL solo su parte del sito. Tuttavia, farlo richiede attenzione e una conoscenza dettagliata, ed è più difficile da ottenere. Dato che devi porre la domanda qui, personalmente ti consiglio di iniziare con SSL a livello di sito; hai una migliore possibilità di farlo bene.

Come implementarlo in IIS : non sono un esperto di IIS, quindi non posso darti una ricetta definitiva su come implementare questi passaggi in IIS. Tuttavia, questo riferimento su l'attivazione di SSL su IIS potrebbe esserti utile. Sembra che tu possa fare clic con il pulsante destro del mouse sulla radice del sito, scegliere Properties , fare clic sulla scheda Directory Security , quindi in Secure Communications , fare clic su Edit e abilitare Require Secure Channel (SSL) . Non so come configurare IIS per impostare automaticamente il flag SECURE su tutti i cookie. Per la migrazione di un sito esistente, ti consiglio di impostare un reindirizzamento in modo che chiunque visiti una pagina HTTP venga reindirizzato a HTTPS. I seguenti riferimenti possono essere d'aiuto (non testati): reindirizzamento a HTTPS , tre metodi per il reindirizzamento a HTTPS . Se esegui la migrazione di un sito esistente, dovrai anche modificare tutti i link e i riferimenti al tuo sito da http: URL a https: URL. Non sono sicuro di come configurare ASP.NET per impostare il flag SECURE su tutti i cookie, ma penso che sia possibile aggiungere cookieRequireSSL="true" o <httpCookies requireSSL="true"> al Web.config ; questo è importante da fare, e soprattutto importante se hai abilitato HTTP o se hai un qualche tipo di reindirizzamento dalle pagine HTTP alle pagine HTTPS. Infine, c'è molto materiale pubblicato su ottimizzazione delle prestazioni per HTTPS .

    
risposta data 09.01.2011 - 02:56
fonte
1

Mi sono imbattuto in questo thread mentre mi risolvo a rilasciare me stesso. La risoluzione che ho avuto è che i percorsi dei cookie sono case sensitive. Ecco la domanda correlata.

link

La mia risoluzione era di reindirizzare dalla pagina di destinazione al percorso corretto. Assicurati di cercare possibili loop di reindirizzamento.

url.com/VirtualDirectory/default.aspx - >

// che ora fornirà il percorso corretto url.com/virtualdirectory/default.aspx Response.Redirect ( "~ / default.aspx");

    
risposta data 04.06.2015 - 07:13
fonte

Leggi altre domande sui tag