Sto eseguendo il porting di un'applicazione ASP.NET su MVC e ho bisogno di memorizzare due elementi relativi a un utente autenticato: un elenco di ruoli e un elenco di ID oggetto visibile, per determinare cosa l'utente può o non può vedere.Ruoli utente - perché non memorizzare in sessione?
Abbiamo utilizzato WSE con un servizio Web in passato e questo ha reso le cose incredibilmente complesse e impossibili da eseguire correttamente il debug. Ora stiamo abbandonando il servizio web che stavo cercando di semplificare drasticamente la soluzione semplicemente per memorizzare queste cose nella sessione. Un collega ha suggerito di utilizzare i ruoli e i provider di appartenenze, ma a questo proposito ho riscontrato una serie di problemi:
a) Soffre di problemi simili ma diversi a WSE in quanto deve essere utilizzato in modo molto limitato ma è complicato persino scrivere test;
b) L'unica opzione di memorizzazione nella cache per RolesProvider si basa sui cookie che abbiamo respinto per motivi di sicurezza;
c) Non introduce alcuna complicazione e bagaglio extra indesiderato;
Tutto ciò che vogliamo fare, in poche parole, è memorizzare due variabili stringa nella sessione di un utente o qualcosa di equivalente in modo sicuro e fare riferimento a loro quando è necessario. Ciò che sembra essere un lavoro di dieci minuti ha finora preso diversi giorni di indagine e per complicare il problema che abbiamo ora scoperto che gli ID di sessione può apparentemente essere falsificati, vedere
http://blogs.sans.org/appsecstreetfighter/2009/06/14/session-attacks-and-aspnet-part-1/
sto pensando a sinistra c'è non è un modo semplice per fare questo lavoro molto semplice, ma trovo che sia impossibile da credere.
si poteva:
a) fornire informazioni semplici su come rendere le sessioni di ASP.NET MVC sicuro, come ho sempre creduto che erano?
b) suggerire un altro modo semplice per memorizzare queste due variabili stringa per i ruoli dell'utente connesso, ecc. Senza dover sostituire un incubo complesso con un altro come descritto sopra?
Grazie.
Avrei dovuto dirlo, noi usiamo SSL quindi non ci sono problemi lì. Inoltre non abbiamo mai avuto un problema con la ricollocazione delle sessioni, quindi non sono preoccupato per questo. – Phil
Come per le variabili di sessione essere completamente sicure: questo è quello che pensavo, ma l'articolo a cui mi sono collegato suggerisce che si può ingannare un utente a unirsi a una sessione esistente, in vari modi, e quindi condividerlo con l'utente autenticato che successivamente accede e quindi memorizza tutti i propri ruoli in là per essere utilizzati dall'altra persona. La soluzione ovvia a questo era di memorizzare l'indirizzo IP nella sessione e controllarlo ogni volta ma apparentemente è facile falsificarlo anche nella richiesta. Anche se non sono stato in grado di fare uno dei modi suggeriti di – Phil
per partecipare a un lavoro di sessione esistente, preferirei sapere perché non si limitano a fare affidamento sulle mie carissime abilità come hacker. Se avessi fiducia in questo, penso che abbiamo risolto il problema, ma finora non lo sono. – Phil