Generazione di token CSRF di sessione basato su ID sessione SSL

1

Situazione successiva:

  • L'applicazione è accessibile solo tramite HTTPS / SPDY
  • nginx sta inviando l'ID di sessione SSL al server upstream
  • All'inizio della sessione mi piacerebbe usare i primi 128 caratteri di quella stringa
  • In PHP: $csrf_token = substr($_SERVER["SSL_SESSION_ID"], 0, 128);
  • Il token CSRF viene memorizzato sul server nella sessione dell'utente e verrà generato un nuovo token se viene generata una nuova sessione

Le mie domande:

  • Questo approccio è sicuro (abbastanza)?
    • Questa domanda riguarda l'utilizzo dell'ID di sessione SSL e non relativo all'utilizzo di token CSRF basati su sessione!
  • Sarebbe possibile utilizzare meno caratteri (ad es. 32)?
  • Dovrei aggiungere una sorta di sale segreto ad esso?
  • Qualcos'altro che potrebbe essere un problema con questo?
posta Fleshgrinder 10.06.2013 - 22:56
fonte

2 risposte

3

Puoi farlo, ma nel momento in cui la tua app diventa più grande e ha bisogno di scaricare lo SLS, si romperà. Presta inoltre attenzione alla lunghezza in quanto esponi una parte dell'ID di sessione ssl che è responsabile della protezione della CIA. Se dovessi prendere una parte troppo grande dell'Id o di tutto questo e un utente malintenzionato sarebbe in grado di farlo tramite xss, potrebbe anche interrompere la sessione ssl.

Per favore, non essere un dave.

    
risposta data 11.06.2013 - 19:10
fonte
2

La ricostituzione dei datapoint crittografici per altri scopi è uno dei peccati capitali della sicurezza dei dati.

Non esiste una ragione logica per fare ciò che stai suggerendo. E anche se una vulnerabilità specifica per ciò che stai suggerendo è immediatamente disponibile, è ancora una cattiva idea.

Usa solo un valore casuale, che è l'approccio noto, controllato, accettato. Altrimenti ti allontani nel Dave territorio.

    
risposta data 11.06.2013 - 20:45
fonte

Leggi altre domande sui tag