Utilizza la variabile javascript invece del cookie di sessione

2

Ho deciso di immergermi profondamente nelle tecnologie di tipo angolare, in cui tutte le pagine sono praticamente solo una pagina che non viene mai ricaricata. E a questo punto ho avuto l'idea, invece di usare i cookie (di cui non ho davvero bisogno), perché non autenticare con il server, ottenere una chiave e mantenere questa chiave in ram come una variabile Javascript, gettando via la tecnologia dei cookie e il deadful "questo sito utilizza cuochi per memorizzare ecc." messaggio.

Nella mia mente questo è più sicuro poiché nulla è scritto, tutto è nella RAM ed è almeno sicuro come con il metodo tradizionale dei cookie.

Ma prima di usarlo, voglio chiederti se credi allo stesso modo o se si tratta di un problema di sicurezza più grande di quello che penso.

    
posta Panayotis 19.06.2018 - 00:12
fonte

2 risposte

4

La principale ragione di sicurezza per evitare i cookie sarebbe quella di prevenire attacchi CSRF , che è un obiettivo valido. I cookie non erano ben pensati da un punto di vista della sicurezza. D'altra parte, ci sono approcci consolidati per evitando CSRF, quindi non è una tecnica estremamente preziosa.

Dal punto di vista della privacy, i cookie (in particolare i cookie di terze parti) sono pericolosi. Per questo motivo, alcuni utenti e / o browser li bloccano, il che può fornire agli sviluppatori un motivo funzionale per usare qualcos'altro.

Tuttavia, anche per un'applicazione a pagina singola (SPA), probabilmente si desidera mantenere il token di sessione. Il metodo standard per eseguire questa operazione da JS consiste nell'utilizzare la memoria locale (archiviazione permanente o di sessione), che è fondamentalmente un modo per archiviare le variabili JS per un determinato sito attraverso visite utente o almeno carichi di pagina all'interno di una determinata sessione. Tutti i browser moderni supportano l'archiviazione locale.

Il principale svantaggio della sicurezza dell'archiviazione locale (o qualsiasi altro modo di fare la gestione programmatica delle sessioni sul client, invece di fare affidamento sul comportamento automatico dei cookie), è che un utente malintenzionato che ottiene XSS (Cross-Site Scripting) all'interno del tuo l'app web può rubare il token e dirottare la sessione per impersonare la vittima, anche dopo che la vittima chiude il browser (al contrario, il tipico cookie di sessione è contrassegnato come httponly , che impedisce a JS di leggerlo e limita il sequestro di sessione solo come a condizione che la vittima lasci aperta l'app Web.

    
risposta data 19.06.2018 - 06:37
fonte
1

La tua domanda è basata su diverse ipotesi errate.

throwing away the cookie technology and the deadful "this site uses cookes to store etc." message

Non so a quale giurisdizione ti riferisci, ma nel caso dell'UE, non importa se si mantengono i dati in un cookie o nella memoria locale, o altrove - è l'uso e il contenuto del dati che determinano le informazioni che è necessario fornire all'utente e per le quali è necessario il consenso, non il substrato di archiviazione.

everything is in RAM

Non necessariamente. La maggior parte dei browser mantiene lo stato tra le sessioni (del browser, cioè - separate da tutte le altre sessioni in corso in TCP, TLS, HTTP) incluso lo stato di Javascript. OTOH, i cookie hanno caratteristiche ben definite.

and is at least as safe as with the traditional cookie method

Quindi hai un mezzo per assicurarti che non sia esposto su connessioni non TLS implementate fuori banda dal contenuto stesso? (per esempio).

    
risposta data 19.06.2018 - 14:20
fonte

Leggi altre domande sui tag