0

このgemを使用してハニーポットフィールドを作成しようとしていますが、実装方法がわかりません。フォームは、ハニーポットを作成するフィールドをどのように認識し、ラベルをどこに指定しますか?フィールドに使用したコードは次のとおりですが、アプリを実行するとフォームが表示されます。

= 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

このハニーポットは、電子メールアドレスのみを要求する登録フォームで使用されており、非表示になっている追加のハニーポットフィールドがあります。私は現在招待状サービスを利用しているので、人々がメールを入力すると招待状が作成され、それを受け入れるか拒否することができます。私がやりたいのは招待機能を取り除くことですが、この招待機能をハニーポットフィールドと組み合わせて使用​​して、ボットの登録を停止できると思います。

モデルをスキップし、ハニーポットフィールドを使用して招待を受け入れるか拒否する方法はありますか?ハニーポットのデータを実際に保存する必要はありませんが、それを使用して、招待を受け入れるかどうかを決定する必要があります。

したがって、次のように機能するはずです。

  1. ユーザーがランディングページにアクセスする
  2. ユーザーには、で構成される登録フォームが表示されます
    1. メールアドレス入力ボックス
    2. 隠されているハニーポットフィールド
  3. ボットが登録すると、ハニーポットに入力されるため、招待状が作成されるときに、ハニーポットに入力しないものを自動的に受け入れることができ、入力するものは拒否されます。

もう1つ、ハニーポットフィールドをテストして、機能するかどうかを確認するにはどうすればよいですか。私はそれを記入して、私のコードが想定どおりに機能しているかどうかを確認したいと思います。

4

3 に答える 3

1

前回の回答がわかりにくかったので書き直します

私が得た情報によると、ユーザーがメールを入力する必要があるランディング ページ フォームがあり、ボットをフィルタリングするためのハニーポットがあります。

  1. その宝石を使用している場合は、フォームにハニーポット フィールドを自分で追加する必要がないことがわかります。(これにgemを使用する目的は正確にはわかりませんが、とにかく..)

  2. フォームにテキスト フィールドを追加して非表示にしたい場合は、自分で非表示にする必要があります (これがテキスト フィールドの仕組みです)。

  3. ボットのフィルタリングにハニーポットを使用している場合、ボットがコントローラーにフォームを送信し、電子メールとハニーポットの両方に入力したときに、 を追加しbefore_filter :check_honeypot、その関数でハニーポット フィールドが空かどうかを確認します。 、そうでない場合は、ボットがありますよね? だから自動的に拒否する

于 2012-02-29T05:59:37.220 に答える
0

クライアント側とサーバー側の両方のハニーポット チュートリアルの セキュア フォームとハニーポットを使用したボットからのコメントについては、こちらを参照してください。

于 2013-01-03T06:07:35.673 に答える
0

私が得た情報によると、ユーザーがメールを入力する必要があるランディング ページ フォームがあり、ボットをフィルタリングするためのハニーポットがあります。

  1. その宝石を使用している場合は、フォームにハニーポット フィールドを自分で追加する必要がないことがわかります。HTMLオプションで実装すると :honeypot => true、アクセシビリティのために適切なラベルが付いた非表示のテキストフィールドが自動的に作成されます。

  2. ボットのフィルタリングにハニーポットを使用している場合、ボットがコントローラーにフォームを送信し、電子メールとハニーポットの両方に入力したら、before_filter :protect_from_spam. その関数で何か特別なことをしたい場合は、コントローラー内でデフォルトをオーバーライドすることもできます。

  3. display: ハニーポットの css を none から inline に変更するだけで、ブラウザで要素を調べることでテストできます (たとえば、Firefox の Firebug を使用) 。このようにして、実際にコードを変更せずに、そのフィールドに入力して、実行すると何が起こるかを確認できます。

于 2012-03-05T01:36:11.150 に答える