Prevenire l'invio di moduli interdominio con nonce?

7

Non ho mai fatto molto in sicurezza web, ma ora ho bisogno di impedire che un modulo venga inviato da qualsiasi cosa tranne il mio dominio.

So come bloccarlo in un file .htaccess ma il referrer non è molto affidabile da quello che ho capito.

Sto ora esaminando i nonces. Ho impostato un nonce sul mio modulo che funziona (sto usando Wordpress, quindi creare campi nonce è facile).

Ciò che ora ho bisogno di sapere è che questo in realtà mi aiuta a prevenire l'invio di domini incrociati?

Nella mia mente fa come se avessi bisogno della mia chiave segreta per generare la stringa nonce, ma d'altra parte la stringa nonce è visibile nell'origine della pagina. Significa che avrai di nuovo bisogno della mia chiave segreta per tradurre la stringa nonce per convalidarla?

Spero che qualcuno possa chiarirlo per me!

    
posta Brigante 08.02.2013 - 11:34
fonte

1 risposta

8

Prevenire l'invio di moduli da un'altra fonte è un problema risolto e l'uso di un nonce è uno dei metodi raccomandati.

Per alcuni precedenti, c'è una forma di attacco contro le applicazioni web noto come Falsificazione richiesta tra siti (XSRF) . Una falsificazione di richiesta cross-site, in termini più semplici, si verifica quando qualcuno carica JavaScript su una pagina dannosa che pubblica post su un'altra pagina . C'è dell'altro, e se non conosci la CSRF, ti consiglio vivamente di leggerlo. (Vedi l'articolo di Jeff Atwood in aggiunta a OWASP articolo che ho collegato sopra.)

La buona notizia è che molti framework di sviluppo web hanno già meccanismi pre-costruiti per prevenire gli attacchi XSRF, e lo fanno assicurando che i messaggi provengano dal tuo dominio. Ancora, usare un nonce è uno di quei metodi.

Dalla pagina OWASP su XSRF:

Related Controls

  • Add a per-request nonce to URL and all forms in addition to the standard session. This is also referred to as "form keys". Many frameworks (ex, Drupal.org 4.7.4+) either have or are starting to include this type of protection "built-in" to every form so the programmer does not need to code this protection manually.
  • TBD: Add a per-session nonce to URL and all forms

Nella parte inferiore della pagina OWASP ci sono diversi riferimenti che includono collegamenti a meccanismi già disponibili per affrontarlo, incluso OWASP CSRF Guard, che usa J2EE , .NET , e i filtri PHP che aggiungono un token di richiesta univoco a ciascun modulo e collegano la risposta HTML al fine di fornire una copertura universale contro CSRF nell'intera applicazione.

    
risposta data 08.02.2013 - 15:25
fonte

Leggi altre domande sui tag