Come dovrei proteggere un modulo di contatto che appare su ogni pagina di un sito web?

12

Il mio cliente ha un piccolo modulo "Contattaci" su ogni pagina del suo sito web. Sono fermamente convinti di non includere la verifica CAPTCHA su questi moduli, per mantenerli facili da usare, ma ritengo che sia mia responsabilità implementare un qualche tipo di sicurezza contro gli attacchi di forza bruta, ecc. Quali sono le mie opzioni qui, specialmente quelle che non comportano modifiche all'interfaccia utente dei moduli.

FYI, il client ha ColdFusion 8 come linguaggio di scripting lato server, che è attualmente utilizzato per inserire i dati nel database. La soluzione non deve essere specifica per ColdFusion, però. Sto cercando idee qui - non necessariamente frammenti di codice.

    
posta Eric Belair 01.06.2011 - 17:06
fonte

4 risposte

12

Questo è un buon articolo di sintesi su CATPCHA:

link

Penso che tu abbia ragione a non usare CAPTCHA. La ricerca ha dimostrato che CAPTCHA può ridurre i tassi di conversione del 3% e potenzialmente fino al 30% . Anche impiegando qualcuno per filtrare o utilizzare manualmente turk meccanico , yourmaninindia.com ecc. forse più economico e migliore per la tua esperienza cliente

Buone misure passive:

  • Lo script Roboo . Demoed a Blackhat quest'anno e offre anche una protezione DOS.

  • Aggiunta di un campo nascosto honeypot che non dovrebbe mai essere completato. È possibile utilizzare Javascript per riempire questo automaticamente su invii di moduli legittimi e convalidare lato server.

  • Misure di velocità come la velocità di invio del modulo.

Tutti questi non sono perfetti, possono causare problemi alle persone disabili e possono darti dei falsi positivi. Se stai ancora ricevendo una quantità inaccettabile di spam o utilizzo di robot, utilizza l'opzione più popolare e gratuita Re-Captcha. Combinare idealmente questo con i passaggi passivi sopra per presentare solo il CAPTCHA se si sospetta una presentazione di un bot (cioè un approccio adattivo non presentato ogni volta agli utenti). Sì, Re-Captcha è stato suddiviso in laboratori di ricerca con un successo pari a 25% utilizzando le tecniche OCR, ma è comunque sufficiente a scoraggiare la rete i robot che cercano bersagli non protetti (correndo più velocemente di quelli che corrono dall'orso). Inoltre stai aiutando Google a tradurre i libri del mondo e fino a quando duolingo.com non si presenterà alla prossima innovazione che non è una brutta cosa.

    
risposta data 01.06.2011 - 17:46
fonte
3

NoBot è una soluzione GRATUITA interessante di Microsoft

Descrizione

NoBot è un controllo che tenta di fornire prevenzione di tipo bot / spam simile a CAPTCHA senza richiedere alcuna interazione da parte dell'utente. Questo approccio è più facile da bypassare rispetto a un'implementazione che richiede un intervento umano effettivo, ma NoBot ha il vantaggio di essere completamente invisibile. NoBot è probabilmente più rilevante per i siti a basso traffico in cui lo spam di blog / commenti è un problema e non è richiesta un'efficacia del 100%.

NoBot utilizza alcune tecniche anti-bot diverse: Forzare il browser del client per eseguire un calcolo JavaScript configurabile e verificare il risultato come parte del postback. (Es: il calcolo può essere semplice o numerico, o può anche coinvolgere il DOM per una maggiore sicurezza del coinvolgimento di un browser) Imporre un ritardo configurabile tra quando viene richiesto un modulo e quando può essere posticipato. (Es: è improbabile che un umano completi un modulo in meno di due secondi) Imposizione di un limite configurabile al numero di richieste accettabili per indirizzo IP per unità di tempo. (Esatto: è improbabile che un umano invii lo stesso modulo più di cinque volte in un minuto)

NoBot può essere testato violando le tecniche di cui sopra: postback rapido, postback molte volte o disabilitazione di JavaScript nel browser.

    
risposta data 01.06.2011 - 19:42
fonte
2

Credo che OWASP abbia alcune risorse per l'anti-automazione.

Per il tuo scenario particolare, potrei raccomandare di utilizzare una sorta di token in ogni link HTML (come i criteri di invio del modulo HTML per il modulo di contatto) e scrivere codice nelle tue pagine dinamiche per aggiungere un'intestazione Referer in modo che tu possa più tardi controlla l'esistenza di un'intestazione Referer che corrisponda al token precedente.

Tuttavia, così facendo potresti creare molti problemi. Ad esempio, potrebbe verificarsi l'iniezione dell'intestazione HTTP. Ovviamente hai i problemi che ogni pagina dinamica ha, come difetti di iniezione, scripting cross-site, perdita di percorso - ma aggiungi anche problemi di concorrenza, problemi di gestione delle eccezioni, ecc.

    
risposta data 01.06.2011 - 17:38
fonte
2

Non preoccuparti di andare a CAPTCHA, è quasi inutile.
Implementare invece un meccanismo di limitazione della velocità razionale, ovvero limitare il numero di richieste "contattaci" che possono arrivare da un singolo indirizzo IP entro un determinato periodo di tempo, per valori sensibili di "numero" e "quantità di tempo". Per esempio. non più di 10 richieste di contatto al minuto, SE questo ha senso - o 5 ogni ora, se QUESTO ha senso.

Ovviamente non puoi limitarlo TROPPO strettamente, dato che gli indirizzi IP non necessariamente mappano uno-a-uno per gli utenti (DHCP, IP dinamico, ad esempio via dialup, proxy aziendale, ecc.), quindi è necessario lasciare un po 'di spazio di manovra lì - ma d'altra parte, 2000 richieste ogni minuto sono troppe.
Non è possibile implementare l'accelerazione per sessione, poiché è facile reimpostare.

Considera anche l'implementazione di un acceleratore globale, per qualsiasi indirizzo, con un tasso molto più alto. Questo potrebbe causare qualche forma di DoS, ma poi di nuovo suppongo che la disponibilità del modulo di contatto non sia critica ....

    
risposta data 06.06.2011 - 23:08
fonte

Leggi altre domande sui tag