Domanda

Come posso impostare il flag Secure su un cookie di sessione ASP.NET, in modo che venga trasmesso solo su HTTPS e mai su un semplice HTTP?

È stato utile?

Soluzione

Esistono due modi, un elemento httpCookies in web.config ti consente di attivare requireSSL che trasmette solo tutti i cookie inclusa la sessione solo in SSL e anche l'autenticazione interna dei moduli, ma se attivi SSL su httpcookies deve anche attivarlo anche all'interno della configurazione dei moduli.

Modifica per maggiore chiarezza: Metti questo in <system.web>

<httpCookies requireSSL="true" />

Altri suggerimenti

Nell'elemento <system.web>, aggiungi il seguente elemento:

<httpCookies requireSSL="true" />

Tuttavia, se hai un elemento <forms> nel tuo blocco system.web\authentication, questo sovrascriverà l'impostazione in httpCookies, riportandola al valore predefinito false.

In tal caso, è necessario aggiungere anche l'attributo requireSSL="true" all'elemento form.

Quindi finirai con:

<system.web>
    <authentication mode="Forms">
        <forms requireSSL="true">
            <!-- forms content -->
        </forms>
    </authentication>
</system.web>

Vedi qui e qui per la documentazione MSDN di questi elementi.

Le cose si complicano rapidamente se si parla di codice archiviato in un ambiente aziendale. Abbiamo scoperto che l'approccio migliore è che il web.Release.config contenga 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 build di rilascio richiedono che i cookie siano SSL.

sicuro: questo attributo indica al browser di inviare il cookie solo se la richiesta viene inviata su un canale sicuro come HTTPS. Ciò contribuirà a proteggere il cookie dal passaggio di richieste non crittografate. Se è possibile accedere all'applicazione sia su HTTP che su HTTPS, esiste la possibilità che il cookie possa essere inviato in chiaro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top