Migliore sicurezza: ID sessione nei cookie e cookie crittografato

4

Discussione di questi due metodi di archiviazione dei dati di sessione:

  • link (Archivia tutti i dati di sessione nel cookie e crittografalo)
  • link (ID sessione nei cookie e utilizzo del database per memorizzare i dati della sessione)

Non sono sicuro che sia più sicuro perché dopo aver letto un po 'di informazioni sulle parti interne del nodo-client-sessioni, ci sono molti potenziali vettori di attacco che devono essere tenuti in conto, e non sono sicuro di quanto conti . Ad esempio, rappresentano un attacco di temporizzazione utilizzando un algoritmo constantTime in un unico punto. Ma ci sono molte più vulnerabilità potenziali, e non essendo un esperto non posso dire quanto sia ben fatto come una biblioteca.

D'altra parte, ho visto persone dire che memorizzare l'ID di sessione nel database è un no go. Ma almeno qui potresti elencare in nero l'ID della sessione.

Qualsiasi consiglio o guida sarebbe molto apprezzato. Grazie.

    
posta Lance Pollard 26.11.2017 - 04:39
fonte

2 risposte

3

La differenza di sicurezza sarà principalmente nei dettagli di implementazione. Fondamentalmente entrambi gli approcci sono gli stessi: si memorizza un blob di dati che è privo di significato per il cliente sul client per conservare uno stato tra le richieste. La differenza è che i cookie di identificazione di sessione sono di per sé privi di significato perché non rappresentano alcuna informazione significativa, mentre il cookie crittografato non ha senso perché il client non possiede la capacità di decrittografare i dati.

I cookie crittografati sono fondamentalmente più complessi: hanno dimensioni maggiori, richiedono un algoritmo complesso, richiedono che l'algoritmo sia correttamente implementato, contengano dati reali e quindi valgano l'attacco, richiedono la gestione di un chiave segreta. Sono anche più difficili da revocare a causa della loro natura decentralizzata.

I cookie di sessione id sono semplici: un ID casuale senza senso che si riferisce semplicemente a dati memorizzati altrove. L'unica vulnerabilità * è l'indovinabilità, che è abbastanza facile da prevenire aumentando la lunghezza e gli ID rotanti e in scadenza. Non ho idea del perché archiviare id / dati di sessione in un database sarebbe una cattiva idea in alcun modo; finché il database è sicuro, non c'è nessun problema lì. Se il tuo archivio dati è soggetto ad attacchi, hai problemi più grandi di quelli in cui sono archiviati i tuoi dati di sessione.

(* Oltre al dirottamento totale, che è la stessa vulnerabilità per tutti i cookie, e difetti specifici dell'implementazione come l'accettazione di ID di sessione indefiniti ecc.)

Dato questo, è necessario decidere se l'aumento della superficie di attacco dei cookie crittografati vale i vantaggi dei server senza stato e se si è sicuri dell'implementazione della crittografia. Per un'elevata scalabilità, vorrei esaminarlo seriamente, per i servizi su piccola scala lo terrei il più semplice possibile.

    
risposta data 26.11.2017 - 21:06
fonte
2

Dato che ho appena fatto una domanda su crypto, non mi metterei come esperto ma:

a) Se opportunamente crittografato, i dati nel cookie dovrebbero andare bene ...

  • Si sta, alla fine del giorno, memorizzando i dati sul computer dell'utente finale. Non eccezionale per le macchine condivise, ma si può sostenere che l'algo è molto probabilmente abbastanza potente
  • Se sono molti dati, lo trasferisci avanti e indietro con ogni caricamento della pagina, quindi potresti rallentare la tua applicazione.

b) Se stai usando una connessione SSL, anche un ID di sessione va bene (con la lunghezza appropriata)

  • Chiavi della sessione regen
  • A seconda dell'applicazione, è possibile ridurre a icona la visualizzazione dei dati personali. per esempio. Se si utilizza la sessione per tenere traccia dell'avanzamento di un utente ma non presentare le proprie informazioni a loro (tramite la sessione), questo potrebbe essere probabilmente più sicuro.
risposta data 26.11.2017 - 05:07
fonte

Leggi altre domande sui tag