consente all'utente di eliminare singole sessioni sull'account, sessioni di incorporamento sicure in HTML?

1

Attualmente sto creando un'applicazione web che consente all'utente di visualizzare tutte le sessioni attive collegate ai propri account e, se lo desiderano, eliminarle singolarmente, ad esempio Dropbox

Un modo in cui voglio implementarlo è l'invio di link contenenti l'effettivo session_key e incorporarli nell'HTML come https://www.example.com/session/delete/SESSION_KEY

Questo potrebbe essere considerato una buona pratica o esiste un modo migliore per farlo?

    
posta AlanSTACK 18.09.2016 - 21:22
fonte

2 risposte

1

Would this be considered good practice or is there a better way to do this?

No, questo non sembra essere l'ideale.

Il problema più grande che vedo è che hai inserito un ID di sessione nell'HTML di una pagina. È buona prassi creare cookie di sessione httpOnly per rendere l'XSS un po 'più difficile da sfruttare. Inserendo l'ID di sessione nell'HTML, si perdono tali informazioni in caso di XSS, rendendo quindi httpOnly inutile.

Questo potrebbe anche essere un problema se i dati sensibili sono archiviati in una sessione, poiché qualcuno che ha dirottato una sessione o un account ora ha accesso a tutte le sessioni. L'impatto sembra minore, ma non sembra ideale e potrebbe essere un problema a seconda dell'applicazione.

Inoltre, non hai alcuna protezione CSRF che - mentre le cattive pratiche in generale - non ha un impatto sulla sicurezza in questo caso in quanto questa non è un'azione molto delicata e un utente malintenzionato dovrebbe conoscere l'ID della sessione , che non fanno Tuttavia, non sembra ideale e viola anche RESTful.

Infine, non è mai una buona idea mettere i dati sensibili in un URL, dovrebbe invece essere inviato tramite POST perché altrimenti potrebbe perdere in vari modi. Di nuovo, questo probabilmente non è un problema di sicurezza, dato che i dati sono inutili non appena vengono utilizzati, ma non seguono le migliori pratiche (e potrebbero essere un problema, ad esempio quando l'eliminazione non ha funzionato).

Suggerirei di utilizzare id che sono indipendenti dall'ID di sessione effettivo e di inviarli tramite POST.

    
risposta data 18.09.2016 - 21:48
fonte
1

Se la chiave di sessione è l'ID di sessione, allora no non sarebbe una buona pratica . L'ID della sessione è come l'oro. Quando si accede a questo ID viene memorizzato come cookie di sessione. Se qualcuno dovesse ottenere questo ID, nulla impedirebbe loro semplicemente di utilizzare gli strumenti di sviluppo del browser per aggiungere l'ID e verrebbero autentificati come quell'utente senza bisogno di un nome utente o di una password. L'unico posto che dovrebbe essere esposto è come cookie di sessione del browser poiché questo è ancora un requisito tecnico per le sessioni.

Idealmente questi ID di sessione dovrebbero avere una chiave di riferimento univoca. E la chiave non può richiamare una sessione ma può essere utilizzata solo per abbinare l'ID di sessione nell'archivio sessioni per eliminarlo. Questa chiave che potresti esporre con pochi rischi rispetto all'ID. In questo modo, la cosa peggiore che ne deriva è ottenere la sessione cancellata.

    
risposta data 18.09.2016 - 22:08
fonte

Leggi altre domande sui tag