2009-06-05 16 views

risposta

13

Risposta breve ... dipende.

La sessione in ASP.NET può essere archiviata in vari modi (InProc/SQL Server/Server di stato), ecc. .)

Come il poster in questa risposta suggerisce

Can we hack a site that just stores the username as a session variable?

una cosa che potreste fare quando si autenticare l'utente e memorizzare il loro nome nella sessione, potrebbe essere quella di memorizzare anche alcune altre informazioni su di loro. per esempio. Loro UserAgentString, il loro indirizzo IP e se un IP diverso o UserAgentString hanno tentato di interagire con la sessione, è possibile invalidarlo.

+2

Una cosa: l'archiviazione dell'IP contro la sessione è buona, ma non infallibile, il problema è che una forma comune di hacking di sessione è contro qualcuno all'interno dello stesso gruppo IP (ad esempio all'interno di un'azienda o AOL). Preoccupazioni simili per UserAgent (solo con una comunanza molto più alta!) – annakata

1

Tutto è possibile, ma per impostazione predefinita è difficile.

Generalmente si dirotta una sessione rubando il cookie di sessione e ricreandolo su un'altra macchina. Tuttavia, per fare ciò, il sito Web deve essere vulnerabile a Cross Site Scripting (che è possibile attenuare con Server.HtmlEncode quando si echeggia l'input dell'utente). Se il risultato è vulnerabile, il cookie di sessione ASP.NET viene contrassegnato come Solo HTTP, il che significa che, se un browser lo supporta, non è accessibile per accedere dagli script sul lato client (sebbene Safari ignori questa impostazione).