アクセスの多いサイトでは特に、スパムによるメッセージ送信やアカウント登録を防ぐための対策が欠かせません。
本日はスパム対策の定番「CAPTCHA(キャプチャ)」をはじめとする、さまざまなフォームのスパム対策方法についてまとめてみたいと思います。
※CAPTCHA(キャプチャ)とは「Completely Automated Public Turing test to tell Computers and Humans Apart」の略で、応答者がコンピュータでないことを確認するために使われる認証技術のこと
スパム対策の基本は、「人」ではないとできないこと
スパムメールは何らかのツールやプログラムを使って自動的に大量送信されているものです。ですので、当然ながらフォームに訪れているのが人間なのかどうかを判別するための手法がスパム対策であると言えるでしょう。
極端な話、自動的に送れないようにフォームを複雑な内容にしてしまえばほとんどのスパムは減らせるでしょう。しかしそれは同時に、フォームの前の人間(=ユーザー)にとっての使い勝手も激しく低下させてしまうことになります。
有名なスパム対策としては「CAPTCHA(キャプチャ)」などが挙げられますが、このようなスパム対策のための手法が時にユーザーのフォーム入力そのものを邪魔してしまうこともありえます。
CAPTCHA(画像認証)がフォームのコンバージョン率を低下させた、2つの事例
https://f-tra.jp/blog/column/5013
スパム対策では、やみくもに送信しにくくするのではなく、いかにフォームのユーザビリティを落とさずにスパムのみを除外するかが鍵となります。
海外EFO情報: CAPTCHA(画像認証)を使うべきでない理由と、ストレスを軽減する10の方法
https://f-tra.jp/blog/overseas/4683
フォームのスパム対策方法
前置きが長くなってしまいましたが、以下、スパム対策の手法についてまとめていきます。
スパム対策の手法一覧
- テキストキャプチャ
- 音声キャプチャ
- クイズ型
- スライダー型
- パズル型
- ミニゲーム型
- 画像認識型
- 友人認識型
- サーバーサイドによる検出
- クライアントサイドの検出
- ハニーポット式
- jsによるフィールド追加
- オープンIDの追加
- 電話による確認
それでは順番に紹介していきます。
テキストキャプチャ
人工知能には解読しにくいよう、歪んだりかすれたり読みにくく加工されたテキスト情報を、用意された入力欄に入力することでスパムでないことを証明する、キャプチャの代表選手です。
現在最も多く普及しているスパム判別方法のひとつだと思います。
さまざまな種類があり、見難い画像をスキップしたり、音声でスペルのヒントを与えてくれるものまで存在します。
有名なのはreCAPTCHAというサービスで、二つの読みにくい文字列を入力させることでスパムを判別しつつ、同時に書籍からスキャンした文字情報のデジタル化を行うという画期的な仕組みとなっています。
※現在reCAPTCHAはgoogleによって提供されており、文字の入力以外にもさまざまな手法でスパムを判別しています。詳しくは後述。
しかし、スパム側の画像解析技術の進化によりキャプチャが破られてしまうこともあります。そのためどんどん画像加工が複雑化し、人間にとっても解読することが難しい場合があり、フォームの完了率にも悪影響を与えている場合があり、問題視されています。
音声キャプチャ
音声キャプチャは、画像ではなく音声でランダムな数字を流し、それを入力させることでスパムを判別します。
音声キャプチャの利点は、テキスト入力に比べアクセシビリティに考慮した方式という点で、スクリーン・リーダーでも使用することができます。
もちろん数字読み上げ音声のバックには雑音が流れており、人工知能による解析を妨げています。
しかしこちらもテキストの場合と同様に、音声認識技術の進化による難易度が上がっている傾向にあります。
スライダー型
スライダー型のCAPTCHAは、その名の通りスライダーをある位置にドラッグすることで人工知能を除外するというアプローチです。
スライダーの位置のバリエーションがそこまでは多くないようにも感じので、突破される可能性は高いかもしれません。
クイズ型
TextCaptchaは、下記のように誰にでも答えられるクイズを出題することでスパムを除外する仕組みとなっています。
- 「Flower」「resting」「lawyer」「campsite」: このうち「c」から始まる単語は?
- purple, penguin, blue, white and red:この中に色はいくつある?
- 1 + sixは?
このような質問は人工知能に破られてしまう可能性が高いことと、言語の対応が膨大であることなどから、広くサービスとしては提供されていないことが多いようです。
パズル型
スライダー型の発展形です。パズルのピースを埋めるようにドラッグすることで人間の動作と認識します。
ドラッグの起点と終点がランダムになるという点ではスライダー型よりも複雑な印象です。
ミニゲーム型
こちらもスライダー型の発展形です。さまざまなお題の簡易ゲームが出題され、主に簡単なドラッグ動作によりゲームクリアすることで認証を行います。
パズル型よりも複雑なため精度は高いと言えるでしょう。
画像認識型
画像の内容を答えることで人と人工知能を区別するのが画像認識型CAPTCHAです。
実際には、アクセシビリティの問題で普及していません。
友人認識型
画像認識型の発展型として登場したアイデアとして「ソーシャル認証」があります。
世界的SNSであるfacebookが2011年にこの認証を試していると発表しています。
この「ソーシャル認証」では、友人の写真を幾つか表示し、名前をつけるように求めることで本人を判別するというもの。スパム対策というよりは不正ログインに対する対策とも言えそうです。
ですが、すべてのfacebookの友人の顔から名前を解答することができるかどうかは困難の場合があり、この方法ではまだ課題があると言えるでしょう。
サーバーサイドによる検出
ここまでCAPTCHAによるスパムの検出方法について紹介してきましたが、ここからはその代替としての手法を紹介していきます。
代替の方法は、ユーザーの手をほとんど煩わせないようになっていることがポイントです。
1つ目はサーバーサイドによるスパムの検出技術が挙げられます。
例えばWordpressというブログシステムのプラグインとして有名なAkismetは、自動的にスパムコメントを駆除してくれます。
仕組みとしては、送信されたデータの内容(発信元(IPなど)や内容、送信頻度など)を分析し、スパムを判断しているようです。
もちろん完全にブロックできるわけではありませんが、サイトによっては大半のスパムをブロックしてくれるようです。
クライアントサイドの検出
スパムによる入力は、人間のそれに比べて圧倒的にスピーディです。
これを利用し、ページがロードされてからフォームが送信される時間との差が例えば5秒以内であるような時は、フォームを再試行するように求めるというような仕組みです。
ハニーポット式
Honeypotと呼ばれる手法は、ユーザーからは見えないがソースとしては存在する(スパムからは認識できる)フォーム項目を追加することで、スパムを検知するという方法です。
もちろん完全ではありませんが、多くのユーザーが気づかない方法でスパムを除外することができるようになります。
いっぽうで、隠していた項目もスクリーンリーダーは読み上げてしまうためにアクセシビリティの点では優れた方法とはいえないでしょう。
jsによるフィールド追加
ハニーポットとは逆の発想で、javascriptなどで別途フォーム項目を読み込むなどして、ユーザーには閲覧できるもののスパムには読めない入力項目を作成するという方法も手法としては可能なのではと思います。
こちらも同様にアクセシビリティなどの問題はあると思います。
オープンIDの追加
フォームの内容にもよりますが、facebookやTwitter、Google,Yahooなどのログイン機能を用いることで、スパムによるフォーム送信は難しくなります。
もちろんこのような外部のおサービスをすべてのユーザーが持っているわけではありませんので、注意が必要です。
参考:Googleの新しいreCAPTCHA
現在Googleが提供している上述の「reCAPTCHA」ですが、2014年12月の公式ブログによると、これまでのテキスト入力型のCAPTCHA方式のかわりに、下記のようにチェックボックスをクリックすることをユーザーに求めるだけの新しいシステムを提案しているようです。
チェックボックスの入力そのものだけではなく、入力前、中、そして後の動作についても解析してスパムを判定するような仕組みとなっているようです。
また、判断がつかない場合のみ従来のCAPTCHA画像を表示するようです。
下記はモバイルの場合のCAPTCHAですが、画像認証式のものとなっています。
さまざまな方法のスパム判定が組み合わされており、ユーザーへかかる負担を極力減らすための創意工夫が感じられます。これから非常に期待できそうです。
最後に
いかがだったでしょうか。本日はフォームのスパム対策方法をまとめました。
キャプチャはどんどん進化しており、従来のテキスト入力型キャプチャ以外にも、異なる入力方法のキャプチャがあることがわかりますね。
また、キャプチャの代替となるスパム対策方法は、キャプチャに比べてユーザーの入力を妨げることがありません。
これらは単一では突破されてしまうかもしれませんが、いくつかを組み合わせることより効果を発揮するでしょう。
しかし、スパム側の技術も日々発達しており、完全にフォームからキャプチャがなくなることは難しいのかもしれません。
そんななかでも、ユーザーにとって使いやすいことをまず第一に考えながら、スパム対策方法を検討するようにしたいですね。
参考記事:
http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/
http://www.bronco.co.uk/our-ideas/how-to-deal-with-spam/
http://uxmovement.com/forms/captchas-vs-spambots-why-the-slider-captcha-wins/