Domanda

Ho una forma web che gli utenti riempiono e inviano informazioni al server e memorizzati in un database. Sono preoccupato che i robot potrebbero semplicemente compilare il modulo e io finire con un database completo di documenti inutili. Come posso evitare Robots di riempire le mie forme? Sto pensando forse qualcosa di simile rilevamento robot StackOverflow, in cui, se si pensa che tu sia un robot, che si chiede di verificare che non sei. C'è un'API lato server in Perl, Java o PHP?

È stato utile?

Soluzione

Ci sono diverse soluzioni.

  1. Utilizzare un CAPTCHA. utilizza i reCAPTCHA per quanto ne so.

  2. Aggiungi un campo in più per la vostra forma e nasconderlo con i CSS (display: none). Un utente normale non avrebbe visto questo campo e quindi non lo riempirà. Si controlla alla presentazione se questo campo è vuoto. Se no, allora si tratta di un robot che ha accuratamente compilato tutti i campi del modulo. Questa tecnica è di solito indicato come un "honeypot".

  3. Aggiungi una funzione timer JavaScript. Al caricamento della pagina inizia un valore pari a zero e quindi l'aumenta col passare del tempo. Un utente normale avrebbe letto e compila il modulo per qualche tempo e solo allora inviarlo. Un robot sarebbe solo compilare e inviare immediatamente il modulo sulla ricezione esso. Si controlla se il valore è passato molto da zero alla sottomissione. In caso affermativo, allora è probabile un utente reale. Se si vede solo un paio di secondi (o addirittura nessun valore a tutti a causa i robot non eseguono JavaScript), allora è probabile che un robot. Ciò però funziona solo se si decide si richiederà agli utenti avere JavaScript su al fine di eseguire "scrivere" le operazioni.

Ci sono altre tecniche di sicuro. Ma questi sono abbastanza semplice ed efficace.

Altri suggerimenti

È possibile utilizzare reCAPTCHA (uguale a StackOverflow) - hanno librerie per un certo numero di linguaggi di programmazione.

Ho sempre preferito captcha Honeypot ( articolo di Phil Haack ), come meno invasivo per l'utente.

CAPTCHA portare problemi di accessibilità e saranno infine sconfitto dal riconoscimento del software.

Consiglierei la lettura di questo breve articolo sulle trappole bot, che includono campi nascosti, come Matteo Viti e Nuova in città già suggerito.

In ogni caso, si è ancora libero di utilizzare entrambe le trappole captcha e bot.

CAPTCHA è grande. L'altra cosa che si può fare che impedirà il 99% del tuo traffico robot ancora non infastidire gli utenti è quello di validare i campi.

Il mio sito, controllo per il testo in campi come il codice postale e il numero telefonico. Che ha rimosso tutta la disinformazione non mirati robot.

Si potrebbe creare un sistema a due fasi in cui un utente compila il modulo, ma poi bisogna rispondere a una e-mail a "attivare" il record entro un determinato periodo di tempo - dicono 24 ore.

Nel back-end, invece di popolamento vostra tabella corrente con tutte le presentazioni della forma, si potrebbe metterli in una tabella temporanea che elimina automaticamente qualsiasi riga che è più vecchio di vostra disponibilità di tempo. Se non avete un serio problema di bot, quindi vorrei pensare che il tavolo non si sarebbe così grande, soprattutto se la prima forma è a pochi campi.

Un benifit di questo approccio è che non c'è bisogno di usare captcha o qualche altra tecnologia come quella che potrebbe creare alcuni problemi di accessibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top