La mia applicazione sta eseguendo un'autenticazione API che utilizza token anziché cookie.
Questo mi porta a porre alcune domande:
- Qual è il modo più sicuro per archiviare il token?
Usando token casuali si elimina il problema degli attacchi CSRF ma dall'altra parte non ci sono Secure
e HTTPOnly
flags.
Ho pensato di usare un qualche tipo di trucco usando le nuove funzioni ECMAScript Harmony Object.freeze()
e Object.seal()
, ma questo sembra essere più un trucco che qualcosa che sarebbe sicuro.
- Come devo autenticare
WebSocket
client comeSocket.io
su HTTPS?
La maggior parte delle librerie come Socket.io
, ws
, Sockjs
e Faye
non consentono di impostare intestazioni HTTP personalizzate o non è compatibile con i vari protocolli di fallback come i socket Flash.
Una possibilità sarebbe quella di inviare il token come parte dell'handshake negli argomenti della query dell'URL ma non mi piace molto perché significa che:
1) - I token verranno mostrati nei file di log che registrano solo l'URL
2) - Dovrei autenticarmi prima durante l'handshake e poi ogni volta che invio dati che significhino due sistemi separati.
Questo mi viene in mente pensando un po 'a questo. Potrebbero esserci altri problemi di fondo.
- Sono solo troppo paranoico e questa opzione è effettivamente sicura?
Potrei anche implementare un qualche tipo di schema asimmetrico usando un sistema di chiavi pubblico / privato, ma questo sembra solo un errore / complicato per essere una soluzione affidabile.
La mia ultima domanda è più una conseguenza delle domande precedenti:
- Il valore di avere gettoni casuali piuttosto che i cookie vale la pena?
Da un lato non hai vulnerabilità di attacco CSRF, ma dall'altra parte ci sono molti altri casi in cui le risposte (almeno per me) non sembrano così chiare.
Grazie in anticipo!