Umi Blog
ウミブログ

こんにちは。
すっかり稲刈りのシーズンとなりましたが皆様いかがお過ごしでしょうか。この時期は風邪をひきやすいので、今年は温かいお風呂にしっかり浸かる、ちゃんと栄養のあるものを食べる、などをして対策しております。幸い、弊社スタッフに風邪をひいている者はおりませんが、みなさまお気をつけくださいね。
さて、今回はスパム対策用のモジュール Honeypot モジュールのご紹介です。
Honeypot モジュールでは、ユーザーには見えない隠しフィールドを用意して、スパムにわざと入力させることでスパム判定を行っており(後ほど図で説明します)、さらに入力から送信までが早すぎたらスパムと判定する(デフォルトでは5秒に設定されていますが、この秒数は管理画面から変更可能です)、と2つのアプローチでスパム対策を行っています。この2つの方法の大きな特徴としては ユーザーが特別な動作をすることなくスパム対策を行えること でしょう。
弊社では スパム対策として Mollom モジュール( 弊社紹介記事 ) を使用することが多かったのですが、 Mollom のサービスは 2018年4月2日 からサポートと更新が停止され、その代わりとして Honeypot モジュールや reCaptcha モジュールの使用が推奨されており、 CAPTCHA と合わせて今後より多く導入されるモジュールのひとつになりそうです。
参考リンク: Mollom End-of-Life Announcement | Mollom
たとえば、こちらの画像は Drupal のユーザー登録フォームとHTMLソースコードを一緒に表示したキャプチャ画像ですが、 url-textfield のクラスを持つフィールドがインラインスタイルシートで非表示にされているのがわかりますでしょうか?
こうすることで人間がブラウザからページを表示する際には見えなくなるのですが、通常スパム bot はスタイルシートは解析せずに HTML のみを解析し、入力フォームがあれば全て入力を試そうとすることが多いのでスパムだけがひっかかってしまう、という仕組みなんですね。
ちなみに、ブラウザ上で Honeypot で生成された隠しフィールドに意図的に入力して送信すると、下記のエラーメッセージが出て送信することができませんでした。
では次は導入方法です。
Honeypot モジュールをインストール後、下記ページにアクセスします。
ホーム » 管理 » 環境設定 » コンテンツ作成 » Honeypot configuration
パス: admin/config/content/honeypot
ここで有効にするフォームを選択して Honeypot を有効化しましょう。
なお、この画面では下記の設定を行うことができます。
url になっているため、Honeypot を使用するフォームで url というフォーム部品を作成する場合は名前が被らないように変更する必要があります。全ての Webform に対して Honeypot を有効化する場合は下記ページにアクセスします。
ホーム » 管理 » サイト構築 » ウェブフォーム » Webforms: Settings » Webforms: Third party settings
パス: admin/structure/webform/settings/third-party
ここでは下記の設定を行うことができます。
なお、個別の Webform モジュールでも下記ページから個別に設定することができます。設定できる項目は Webform 全体の設定画面と一緒です。(*** は個別の Webform の システム内部名称です)
パス: admin/structure/webform/manage/***/third-party-settings
次にカスタムモジュールなどで作成したフォームへの Honeypot の追加方法も記述します。
独自のフォームや、独自のモジュールの hook_form_alter を使用してフォームに追加する場合、 フォームビルダー関数内(または hook_form_alter 内)で下記関数を呼び出します。
honeypot_add_form_protection($form, $form_state,['honeypot', 'time_restriction']);
Honeypot の使用、あるいは時間制限の使用の 有効/無効 を設定するには第3引数の配列にそれぞれの単語を指定すれば OK です。
ユーザーにストレスを与えることなくスパム対策ができる Honeypot モジュール。
この Umi->d のサイトにも運用の途中で Honeypot モジュールを導入しましたが、ほとんどのスパムを防ぐことができるようになりましたし、設定方法も簡単なので、とりあえず導入して間違いないモジュールのひとつかと思います。ぜひインストールしてみてください。
小さなご意見も、私たちにとっては大きなヒントです!
ぜひ率直なご感想をお寄せください
この

Masters of Drupal Engineering.
人に、