Domanda

Ho un webapplication (asp.net 3.5) con SSL misto. Tutte le pagine relative conto vengono consegnati su SSL. Per lo più tutte le altre pagine vengono consegnati nel corso non SSL. Per passare automaticamente tra HTTPS e HTTP io uso questa componente . Ultimamente c'è stata una notizia per quanto riguarda la capacità toch dirottare le sessioni utente su reti WiFi non sicure. Questo dovrebbe essere possibile catturando il cookie che viene trasmesso tramite connessioni non SSL.

Questo mi attivato per rivedere le mie scelte di sicurezza in questo webapplication. Ho (ancora una volta) afferrato questo articolo da MSDN e provato il requireSSL = true di proprietà sul mio FormsAuthentication. Prima Ho anche iniziato la webapplication mi sono reso conto che il mio User.Identity sarà nulla sulle pagine non SSL perché il cookie che contiene questa informazione non viene inviato da e per il browser web.

Ho bisogno di un meccanismo che autentica l'utente tramite una connessione SSL ... e ricorda queste informazioni di autenticazione, anche su pagine non-SSL.

Durante la ricerca SO, ho trovato questo post . E 'a me sembra che questa sia una buona soluzione. Ma, mi chiedo se una soluzione può essere trovata nella memorizzazione delle informazioni di login in sessionState? Sto pensando di catturare l'Application_AuthenticateRequest nel Global.asax. Verificando la connessione è sicura e controllare sia l'authCookie o Session. Non so esattamente come ho intenzione di implementare questo ancora. Forse si può pensare con me su questo?

È stato utile?

Soluzione

Purtroppo, si è in conflitto esigenze. Non si può avere una sessione sicura sopra non SSL, quindi mi piacerebbe sfidare il vostro presupposto di fondo: perché non hanno l'intero utilizzo del sito SSL

Altri suggerimenti

Dal MVC FAQ (domanda simile risposta da parte della sicurezza guru Levi) per chiedere un attributo di non utilizzare SSL.

• I [RequireHttps] attributo può essere utilizzato su un tipo di controller o metodo di azione per dire "questo si può accedere solo tramite SSL." le richieste non SSL al controller o l'azione verrà reindirizzato alla versione SSL (se un HTTP GET) o respinte (se un HTTP POST). È possibile ignorare il RequireHttpsAttribute e modificare questo comportamento, se lo si desidera. Non c'è alcun attributo [RequireHttp] built-in che fa il contrario, ma si potrebbe facilmente fare il vostro proprio se si desidera.

Ci sono anche sovraccarichi di Html.ActionLink (), che prende un parametro di protocollo; è possibile specificare "http" o "https" in modo esplicito come protocollo. Ecco la documentazione MSDN in una di queste sovraccarico. Se non si specifica un protocollo o se si chiama un sovraccarico che non ha un parametro di protocollo, si presume si voleva il link per avere lo stesso protocollo la richiesta corrente.

Il motivo per cui non abbiamo un attributo [RequireHttp] in MVC è che non c'è davvero molto beneficio ad esso. Non è così interessante come [RequireHttps], e incoraggia gli utenti a fare la cosa sbagliata. Ad esempio, molti siti web log-in tramite SSL e reindirizzare torna a HTTP dopo aver effettuato l'accesso, che è assolutamente la cosa sbagliata da fare. Il cookie di login è altrettanto segreto come username + password, e ora si sta inviarlo in chiaro attraverso il filo. Inoltre, hai già preso il tempo per eseguire la stretta di mano e fissare il canale (che è la maggior parte di ciò che rende più lento di HTTPS HTTP) prima che il gasdotto MVC è gestito, in modo [RequireHttp] non farà la richiesta o futuro corrente richieste molto più veloce.

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