Vulnerabilità con token di sessione con backup DB

6

Un utente accede e riceve un token di sessione. Questo token è anche memorizzato in un database sul server. L'utente include questo token segreto con ogni richiesta e il server lo estrarrà dal DB per autenticare l'utente.

Questo schema è vulnerabile a qualcuno (un DBA arrabbiato forse) che annusa il token dal DB e dirottando la sessione dell'utente. Mantenere la memoria del token di sessione in memoria aumenta la difficoltà di sniffare la chiave, ma non è ancora impossibile.

Qual è il modo generalmente accettato di memorizzare in modo sicuro i token di sessione?

    
posta Allen Kross 18.06.2013 - 21:32
fonte

3 risposte

6

Direi che per la maggior parte dei casi è generalmente considerato che una volta che un utente malintenzionato ha un accesso di livello DBA al tuo sistema è compromesso, quindi mitigare questo attacco è più probabile che avvenga tramite policy / change management / monitoraggio dell'attività ecc.

Se pensi al danno che un DBA arrabbiato può fare a un sistema, sniffare un token di sessione di un utente è probabilmente alquanto inferiore alla scala ...

    
risposta data 18.06.2013 - 21:42
fonte
3

Un amministratore di database arrabbiato può inserire JavaScript nei contenuti forniti dal database ed eseguire attacchi XSS di precisione contro i tuoi utenti, che gli consentiranno di rubare gli identificatori di sessione a destra formano il browser dell'utente , rendendo qualsiasi posto in cui si memorizzano gli identificativi sul server e quelli memorizzati nel database.

Quindi il metodo che stai proponendo non è davvero insicuro, preferirei semplicemente utilizzare la gestione delle sessioni incorporata come $_SESSION[] di PHP e Session[] di .Net

    
risposta data 18.06.2013 - 21:54
fonte
1

Il motivo per cui le nostre password hash si hanno quando un utente malintenzionato ha accesso al database (usando SQL injection), quindi deve dedicare tempo e risorse a rompere l'hash della password prima che sia utile.

La memorizzazione del token di sessione nel database è una scorciatoia, ora si memorizzano le credenziali di autenticazione nel database che possono essere utilizzate immediatamente. È come se stessimo memorizzando le password in testo semplice.

I token di reimpostazione della password, gli identificatori di sessione e le password devono essere tutti sottoposti a hash quando questi dati vengono mantenuti.

    
risposta data 18.06.2013 - 23:01
fonte

Leggi altre domande sui tag