Domanda

Sto cercando di usare Questo gem per creare un campo honeypot, ma non sono sicuro di come implementarlo.Come fa il modulo a sapere quale campo creare l'honeypot e dove devo specificare l'etichetta?Ecco il codice che ho utilizzato per il campo, tuttavia quando eseguo l'app il modulo sembra essere visibile:

= form_for(:invitation, :url => request_invite_path, :html => {:id => 'login_form', :honeypot => true}) do |form|
      = form.text_field :email, :size => nil
      = form.text_field :honeypot #This field was created to store the honeypot input
      %button{:type => "submit"} Request Invite

Questo honeypot viene utilizzato in un modulo di registrazione che richiede solo l'indirizzo e-mail e poi c'è il campo honeypot aggiuntivo che è nascosto.Al momento dispongo di un servizio di invito, quindi quando le persone inseriscono la propria email, viene creato un invito e posso accettarlo o rifiutarlo.Quello che voglio fare è eliminare la funzione di invito, ma immagino di poter utilizzare questa funzione di invito insieme al campo honeypot per impedire ai bot di registrarsi.

Esiste un modo per saltare i modelli e utilizzare comunque il campo honeypot per accettare o rifiutare l'invito?In realtà non ho bisogno di archiviare i dati dell'honeypot, ma devo usarli per decidere se accettare o meno l'invito.

Quindi dovrebbe funzionare così:

  1. L'utente arriva alla pagina di destinazione
  2. L'utente vede il modulo di registrazione composto da
    1. casella di immissione dell'indirizzo e-mail
    2. campo honeypot nascosto
  3. Se un bot registri riempirà l'Honeypot, quindi quando viene creato l'invito, posso accettare automaticamente quelli che non riempiono l'honeypot e quelli che lo fanno verranno rifiutati.

Ancora una cosa, come posso testare il campo honeypot per vedere se funziona?Voglio compilarlo e vedere se il mio codice sta facendo quello che dovrebbe.

È stato utile?

Soluzione 2

Quindi, da quello che ho capito, hai un modulo della pagina di destinazione in cui l'utente deve inserire un'e-mail e c'è un honeypot per filtrare i bot.

  1. Se stai usando quella gemma, vedrai che non è necessario aggiungerti il ​​campo honeypot al modulo.Quando lo implementi con:honeypot => true Nelle opzioni HTML, crea automaticamente un campo di testo nascosto con l'etichetta appropriata per l'accessibilità.

  2. Se stai usando un honeypot per filtrare i robot, quando un bot presenta il modulo al controller e ha compilato sia l'e -mail che l'honeypot, aggiungi un solo before_filter :protect_from_spam.Se vuoi fare qualcosa di speciale in quella funzione, puoi sovrascrivere i suoi impostazioni predefinite anche all'interno del controller.

  3. È possibile testarlo ispezionando l'elemento nel browser (con Firebug su Firefox, ad esempio) semplicemente modificando il CSS display:dell'honeypot da none a inline.In questo modo puoi compilare quel campo e vedere cosa succede quando fai senza modificare effettivamente il codice.

Altri suggerimenti

Mi dispiace che tu non abbia capito la mia risposta precedente, la riformulo

Quindi, da quello che ho capito, hai un modulo della pagina di destinazione in cui l'utente deve inserire un'e-mail e c'è un honeypot per filtrare i bot.

  1. se stai usando quella gem, vedrai che non avrai bisogno di aggiungere tu stesso il campo honeypot al form.(Non vedo esattamente lo scopo di usare una gemma per questo, ma comunque..)

  2. quando aggiungi un campo di testo al modulo e vuoi che sia invisibile, devi renderlo invisibile tu stesso (ecco come funzionano i campi di testo)

  3. se stai utilizzando un honeypot per filtrare i bot, quando un bot invia il modulo al controller e ha compilato sia l'e-mail che l'honeypot devi semplicemente aggiungere un before_filter :check_honeypot, e in quella funzione controlla se il campo honeypot è vuoto o no, e se non lo è, beh hai un bot, giusto?quindi rifiutalo automaticamente

Fare riferimento a questo per il tutorial honeypot sul lato client e serverForme sicure e commenti dai bot usando honeypot

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