2009-09-18 8 views

risposta

82

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" /> 
+1

+1 Questo ha funzionato. Grazie! – Alex

+11

+1 Per chiarire, questo è ciò che si dovrebbe aggiungere al web.config per impostare il flag sicuro il cookie di autenticazione su true '' – Tr1stan

+6

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

130

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.

+2

Modifica minore (è necessario il nodo di autenticazione nel sistema btw.web e le forme):

+1

È possibile evitare altre impostazioni web.config over-in sella alla tua impostazione includendo l'attributo 'lockItem'. In questo modo: . Maggiori informazioni qui http://www.dotnetnoob.com/2010/11/how-to-secure-aspnet-cookies.html – JTech

+0

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 –

12

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.

Problemi correlati