Come posso impostare il flag sicuro su un ASP.NET cookie di sessione, in modo che possa essere trasmesso solo su HTTPS e mai su HTTP pianura?Come posso impostare il flag di sicurezza su un cookie di sessione ASP.NET?
risposta
Ci sono due modi, uno httpCookies
elemento web.config
permette di attivare requireSSL
che trasmettono solo tutti i cookie tra cui sessione SSL solo ed anche all'interno di forme di autenticazione, ma se si attiva SSL su httpCookies è anche necessario attivarla anche la configurazione dei moduli interni.
Edit per chiarezza: mettere questo in <system.web>
<httpCookies requireSSL="true" />
Nell'elemento <system.web>
, aggiungere il seguente elemento:
<httpCookies requireSSL="true" />
Tuttavia, se si dispone di un elemento <forms>
in il tuo blocco system.web\authentication
, quindi questo sostituirà l'impostazione in httpCookies
, riportandolo al valore predefinito false
.
In tal caso, è necessario aggiungere l'attributo requireSSL="true"
all'elemento forme pure.
Così si finirà con:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
Vedi here e here per MSDN la documentazione di questi elementi.
Modifica minore (è necessario il nodo di autenticazione nel sistema btw.web e le forme):
È possibile evitare altre impostazioni web.config over-in sella alla tua
Inoltre, se esiste un elemento 'roleManager' il suo attributo' cookieRequireSSL = "true" 'dovrebbe anche essere impostato su true. Ref. https://msdn.microsoft.com/en-us/library/system.web.security.roles.cookierequiressl(v=vs.110).aspx –
Le cose si disordinato rapidamente se si sta parlando di codice di check-in in un ambiente aziendale. Abbiamo riscontrato che l'approccio migliore è quello di avere il web.Release.config contiene quanto segue:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
In questo modo, gli sviluppatori non sono interessati (in esecuzione in debug), e solo i server che ottengono costruisce uscita richiedono che i cookie siano SSL.
+1 Questo ha funzionato. Grazie! – Alex
+1 Per chiarire, questo è ciò che si dovrebbe aggiungere al web.config per impostare il flag sicuro il cookie di autenticazione su true ' ' –
Tr1stan
Si noti che questo dipende dalla vostra (a livello di server) configurazione. Ho portato l'area di test in basso con l'errore "L'applicazione è configurata per emettere cookie sicuri, che richiedono al browser di inviare la richiesta tramite SSL (protocollo https), tuttavia la richiesta corrente non è su SSL". Questo perché disponevamo di un proxy inverso e i browser ci collegavano tramite SSL, ma il proxy inverso al server IIS si trova sulla porta 80, quindi l'applicazione non pensava che fosse protetta. – mlhDev