2009-08-24 14 views
5

Ho un sito Web ASP.NET 3.5 che utilizza il provider di appartenenza SQL standard.Perché ASP.NET accetta identificatori di sessione creati esternamente?

L'applicazione deve passare IBM Rational AppScan prima di poter inviare alla produzione.

sto ottenendo l'errore:
Gravità: Alta Tipo
test: Applicazione
URL Vulnerabile: http://mytestserver/myapp/login.aspx
Operazioni di bonifica: non accettano di identificativi di sessione creati esternamente

Cosa posso fare risolvere questo?

Sto utilizzando SQL Membership Provider. Questo è collegato? Sto usando anche i controlli di login standard. Ho il "Ricordami" spento e nascosto.

Grazie.

+0

Non riesco a pensare ad alcun motivo per cui questo sarebbe intrinsecamente cattivo? Non cambia il fatto che lo controllino, ma mi chiedo * perché *. – Thorarin

risposta

8

Questa non è una vulnerabilità (e davvero non mi piace AppScan a causa del suo falso positivo es: il numero di volte che ho dovuto spiegare che i cookie CSRF non devono essere collegati a una sessione sul mio piccolo progetto open source sta diventando fastidioso).

Tutto ciò che accadrà in questo caso è la prima volta che qualsiasi elemento viene memorizzato nello stato di sessione con un identificativo di sessione creato una nuova sessione verrà aperta sul server, con nulla in esso. Se sei preoccupato per la fissazione della sessione, puoi cancellare il cookie dopo l'autenticazione.

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

Ma con autenticazione basata su form i dettagli di autenticazione non sono tenuti in sessione e quindi la fissazione non è un problema a tutti.

Francamente se si deve eseguire scansioni di sicurezza senza che nessuno valuti se i risultati non sono falsi positivi, allora si tratta di un problema completamente diverso.

+0

Grazie. Tuttavia, ho provato questo, ma IBM Rational AppScan ha riportato lo stesso errore di sicurezza. –

+0

Tuttavia non è una vulnerabilità e la tua spiegazione è sbagliata. Hai scritto e accettato una risposta errata. – blowdart

+0

Sono d'accordo con te, ma solo dicendo che non è abbastanza. Non mi piace neanche lo strumento AppScan, ma quello è il mondo in cui vivo. Spreco un giorno o due per ogni progetto. Finché non cambiano politica, devo conviverci. –

0

Sembra che la proprietà sia controllata da RegenerateExpiredSessionId. Impostalo su vero. Mantenere anche il time-out a un valore basso, il più stretto possibile dagli utenti (ad esempio 10-15 minuti).

+1

Grazie. Ho provato questo, ma IBM Rational AppScan sta colpendo il sito ogni pochi secondi. Ridurre il valore a 10 minuti non aiuta. –