Questo schema anti-contraffazione è sicuro?

0

Per prevenire gli attacchi di falsificazione delle richieste cross-site, sto considerando il seguente schema:

Per ogni utente, memorizza una chiave casuale. Se l'utente invia informazioni "pericolose", include un token di sicurezza e una data di creazione nel caricamento. Se la data di creazione è precedente a T (sono attualmente in attesa di 5 minuti), la richiesta è considerata scaduta e non valida.

Il token di sicurezza sarà un MAC (Poly1305-AES?) oltre la data di creazione, firmata con la chiave casuale dell'utente. Se la richiesta è abbastanza giovane, verificare se il MAC è valido per il datetime per questo utente. Se lo è, considera la richiesta autentica.

Questo schema è sicuro contro CSRF e riproduce gli attacchi, a patto che tutte le comunicazioni siano su https?

    
posta Martijn 20.03.2014 - 21:11
fonte

2 risposte

2

Il tuo approccio sembra un'implementazione valida delle misure CSRF: l'utilizzo di un token inviato al di fuori del meccanismo dei cookie.

Cose da considerare con il tuo approccio:

  • Assicurati che la chiave casuale per ciascun utente sia generata utilizzando un metodo crittograficamente sicuro.
  • Con l'input "pericoloso" presumo tu intenda tutte le richieste POST - se così è l'approccio corretto finché non hai richieste GET che alterano i dati (che di solito non è un buon approccio in sé).
  • Avrei una chiave univoca basata sulla sessione utente anziché su una data negli ultimi cinque minuti. Si consiglia di utilizzare l'hash dell'ID di sessione e della chiave utente anziché implicare la data, il che renderà le cose un po 'più sicure e meno probabili per la chiave di un utente da scoprire se un utente malintenzionato ha accesso a un altro account utente per un periodo precedente a qualsiasi attacco.
  • Non proverei a creare un token CSRF per proteggere dagli attacchi di replay: non è questo il suo compito. HTTPS ti proteggerà contro questo .

Controlla anche Scheda cheat di prevenzione tra i siti incrociati (CSRF) .

    
risposta data 21.03.2014 - 11:28
fonte
2

CSRF è un problema risolto. Vedi Scheda Cheat CSRF Prevention su owasp .

    
risposta data 20.03.2014 - 21:37
fonte

Leggi altre domande sui tag