2021年10月18日 | KAKYOUIN HARUMI
スパム対策に効果的なGoogle reCAPTCHAをフォームに設置してみよう!

reCAPCHAとは
reCAPCHAとは、Googleが無料で提供しているbotと人間を区別するためのサービスです。皆様も「私はロボットではありません」といった項目にチェックマークを入力した経験があるのではないでしょうか。これや、ふにゃふにゃに歪んだ意味のない英数字を読み取ったり、指定された画像にチェックを入れていくのもreCAPCHAの一つです。
CAPCHAの仕組み
従来のCAPCHAは文字を識別するように指示します。ふにゃふにゃに歪ませた文字を表示しているのは、botに識別されないようにわざとそのような方法を用いています。識別をクリアするためには、ユーザーは正しく英数字を読み解き、正しく入力する必要があります。万が一間違えて入力したり、読み解けなかった場合は、再テストとなります。このようなテストは、ログインフォーム、アカウントの作成、オンライン投票などに用いられることが一般的に多くあります。
画像識別のreCAPCHAテストの場合、ユーザーには四角形の画像が9~16個表示されます。「画像の中から動物を選んでください」と指示があれば、9~16個の表示された画像の中から、動物の画像をユーザーは選択する必要があります。ユーザーの回答が、同じテストに回答したほかのユーザーたちと回答と一致する場合、テストをクリアすることができるようになっています。
単一のチェックボックスを用いたreCAPCHAの場合は、「私はロボットではありません」という文言のあとに続くチェックボックスにチェックを入力するものです。このように簡単なテストで本当にbotと人間の識別ができているのか不安に思われた方もいるかと思いますが、このチェックボックスにチェックを入力すること自体がテストなのではなく、チェックボックスにチェックを入力するまでのカーソルの動きが考慮されるのです。人間のカーソルの動きの場合は、顕微鏡レベルではある程度のランダム性を持っています。この動きでbotか人間かを識別しているのですね。
手順解説
Google reCAPCHAを利用するには、Googleのユーザーアカウントを所持する必要があります。登録画面では
・ラベル:キャプチャを識別するための名前です。自分で覚えやすい名前にすると良いでしょう。
・reCAPCHAタイプ:利用するreCAPCHAタイプを選択します。
・ドメイン:reCAPCHAを使用するドメインを指定します。
・オーナー:Googleアカウントのメールアドレスを指定します。
そして、「reCAPCHA利用条件に同意する」というチェックボックスにチェックを入力し、「送信」ボタンをクリックして同意します。
入力に問題がなければ、上記の操作完了後に登録確認画面が表示されます。ここでAPIキーというサイトキーとシークレットキーが表示されるので、どこかに控えておくと良いでしょう。このAPIキーは後から確認することも可能です。
そして「保存」ボタンをクリックし、Web登録を完了し終了です。
メリット
reCAPCHAとは、botと人間を区別するためのサービスであると述べましたが、botと人間を区別するのは、botによるスパム対策のためです。Botによるスパム攻撃には、標的となるコンピュータをウイルスに感染させたり、特定のURLに誘導し、個人情報を取得したりするといった攻撃などがあります。例えば、botからフォームから大量のメールが送られてきた場合、本当に問い合わせがしたい人からのメールに気付けなかったり、サーバーがダウンしてしまい、アクセスできないなどといった弊害が起きてしまいます。それを防ぐことができるメリットがあります。
もう一つのメリットは、無料で導入できるという点です。無料でbotからのスパム攻撃を防ぐことができるなんて、魅力的ですよね。
デメリット
デメリットには、ユーザーからのアクセスするまでに手間を増やしてしまうという点です。ふにゃふにゃに歪んだ読みずらい英数字や、画像選択などわずらわしい手間をユーザーに負担させてしまいます。このような手間によってカゴ落ちも懸念されます。ユーザーが間違った選択や入力をしてしまった場合、はじかれてしまうなどのデメリットもあります。また、完全にbotを防ぐことができないという点もデメリットにあげられるでしょう。reCAPCHAが弾けるのはbotだけなので、セキュリティ対策を万全にするためには、他の策も講じる必要があるでしょう。
reCAPCHA以外のbot対策方法
reCAPCHAでは、botによる攻撃を100%防げるわけではないことを頭に入れておく必要があります。reCAPCHA以外でbotによる攻撃を対策するには、以下のような方法があります。
・特定のIPアドレスからのアクセスを遮断する方法
この方法は、攻撃してくる相手のIPアドレスを把握できている場合に有効です。攻撃元のIPアドレスからのアクセスをできないようにすることで、攻撃元は攻撃どころかフォームにアクセスすることすらできなくなります。
・特定のメールアドレスのドメインを入力拒否文字列として設定する
次に、特定のメールアドレスのドメインを入力拒否文字列として設定しておくという方法があります。これは攻撃元のメールアドレスのドメインにバリエーションがない場合有効です。フォームの多くは、メールアドレスの入力を必須としています。そのため、攻撃元のメールアドレスのドメインが共通していれば、設定することにより弾くことができます。ただ、この方法は攻撃元が利用するメールアドレスのドメインに規則性がない場合活用できないというデメリットがあります。
・ノンリファラーアクセスを遮断する
リファラーとは、ユーザーがあるページにアクセスする直前に観覧していたページのことです。Googleを経由してフォームにアクセスした場合、リファラーはGoogleになります。通常、ユーザーは何らかのページを経由してフォームにアクセスします。そのため、「リファラーがない」ノンリファラーは極めてまれです。しかし、botは標的のフォームを機械的に巡回し攻撃しているため、リファラーがないケースが多いのです。したがって、リファラーがないアクセスである「ノンリファラーアクセス」を遮断することにより、botからの攻撃を防ぐことが可能になるのです。しかし、人間のアクセスまで遮断してしまう可能性もあります。例えば、メールに添付されたURLからのアクセスなどがそうです。このようなデメリットがあるということは、覚えておく必要があるでしょう。
まとめ
不正アクセスの手口やbotは多様化しており、webサイトを守るためには様々な策を講じることが求められます。reCAPCHAはその一つの策として挙げられます。無料かつ簡単に誰でも導入することが可能な、大変便利なツールの一つです。Botからの攻撃には一定の効果が見込めるでしょう。
本格的なセキュリティ策を講じる際には、reCAPCHAだけでなくそのほかの策も検討、導入してみてくださいね。