Forza ID sessione ASP.NET

1

Dopo aver letto questo e questo , mi chiedo se sia considerato sicuro utilizzare l'ID di sessione ASP.NET predefinito come un mezzo per autenticare l'utente. So che sarebbe meglio implementare ASP.Identity, che ha un cookie 'fedAuth' molto più lungo accanto al meccanismo di sessione ASP, tuttavia a causa di vincoli, questo è molto difficile. Naturalmente, nel caso in cui il sessionid ASP non sia abbastanza sicuro da essere utilizzato come mezzo per autenticare l'utente, nulla è impossibile.

Quello che voglio sapere è che oggi è considerata una cattiva pratica utilizzare il ID sessione ASP.NET come mezzo per verificare l'utente, quando sono impostati sia i flag solo HTTP che quelli Secure? Un confronto di sicurezza con l'autenticazione dei cookie di ASP.Identity sarebbe bello, come la prima fonte I listed sembra avere un'implementazione personalizzata, che certamente non voglio implementare. Preferirei vedere un confronto con qualcosa di stabilito.

    
posta Michael 29.06.2015 - 14:43
fonte

2 risposte

1

Poiché entrambe le implementazioni si basano sulla sicurezza del cookie per proteggere la sessione, ciò significa che il confronto si basa principalmente sulle qualità dei valori del cookie (ovvero se rubi i cookie in cui ti trovi).

Entrambi i valori sono fondamentalmente un valore crittografato rispetto a una chiave memorizzata sul lato server. Le sessioni utilizzano un valore casuale crittografato rispetto alla chiave del computer e le identità ASP.NET utilizzano una raccolta di valori che descrivono l'identità della sessione crittografata rispetto alla chiave del computer.

Le sessioni si basano su una mappa in memoria (o persistente su DB) dell'ID sessione decrittografata sulle informazioni di sessione, mentre le identità reidratano l'identità della sessione direttamente dal valore memorizzato nel cookie.

Da un lato, Sessions non è portabile perché si basa su un puntatore che riporta al valore in memoria, quindi se rimuovi quel puntatore la sessione è morta. D'altra parte, in realtà non scala bene.

Da un punto di vista puramente di sicurezza sono più o meno alla pari, ma Sessioni è stata deprecata per un intero gruppo di motivi non correlati alla sicurezza.

    
risposta data 29.06.2015 - 18:04
fonte
0

L'aggiunta di identità ASP.NET non dovrebbe essere un grosso problema. Guida qui .

La sessione non è stata progettata come meccanismo di autorizzazione. Ha alcune caratteristiche che lo rendono inadatto come usare lo stesso identificatore pre e post autenticazione, rendendolo vulnerabile alla fissazione della sessione . Inoltre, è difficile controllare lo stato di autorizzazione per l'accesso alla pagina, poiché ogni pagina dovrà avere i propri controlli manuali implementati.

Detto questo, alcuni meccanismi di autorizzazione nella vecchia autenticazione basata su form non erano perfetti. Ad esempio il metodo di disconnessione non ha cancellato lo stato di accesso al lato server :

Calling the SignOut method only removes the forms authentication cookie. The Web server does not store valid and expired authentication tickets for later comparison. This makes your site vulnerable to a replay attack if a malicious user obtains a valid forms authentication cookie.

Non sono sicuro che sia stato corretto nella nuova identità di ASP.NET.

    
risposta data 30.06.2015 - 10:47
fonte