[Force.comでWeb制作]Force.com SitesにCAPTCHA 実装
Force.com Sitesの機能を使ってパブリックなサイトを構築するにあたり、気になるポイントの一つがセキュリティ。フォームのあるページでユーザからの投稿を受け付けるようなページの場合何かと気をつけるポイントが多いです。そのセキュリティ対策の一つのCAPTCHAによりSPAM投稿防止の方法をご紹介。
参考:Adding CAPTCHA to Force.com Sites
[概要]
CAPTCHA技術を使うことで、機械では読み取れず人間が目視で認識できるような歪曲した文字列が書かれた画像をフォームの入力欄に表示して、プログラムによる自動連続投稿などを防いでSPAM投稿を回避することができます。このCAPTCHA技術をForce.com Sitesに実装するにはreCAPTCHAというCAPTCHAサービスとマッシュアップする方法があります。APEXコードだけではCAPTCHA画像を生成するのは難しいので、外部サービスとの連携を選択するほうが近道のようです。
[reCAPTCHAについて]
reCAPTCHAは外部のWEBサイトにCAPTCHAサービスを提供してくれる無料サービスです。最近Googleに買収されたみたいですね。
reCAPTCHAのサービスの仕組みはこんな感じ。
- ユーザがreCAPTCHAのプラグインが実装されたWebサイトにアクセスして、フォームの入力項目が表示される。
- 同時に、ページ内に埋め込まれたreCAPTCHAサービスが提供するCAPTCHAフォームが表示される。そこにはreCAPTCHAのトークンが含まれている。
- ユーザがフォーム入力項目とCAPTCHAの入力を終えてWebサーバに送信する。
- Webサーバ内のWebアプリケーション内で、ユーザから受け取ったreCAPTCHAのトークンと入力値をreCAPTCHAサーバに投げて検証を行う。
- Webアプリケーション内で検証結果が正しいと判断されたら、ユーザにその結果を返す。
[サンプル]
参考サイトのほうにサンプルで使えるAPEXコードとVisualforceページのソースが提供されており、大変参考になります。BSDライセンスで配布してくれています。それを実装したサンプルサイトをForce.com Sitesで公開しておきますので、参考にどうぞ。
http://abeuhuru-developer-edition.na2.force.com/recaptcha
この例は単純にreCAPTCHAのフォームだけ設置してますが、たとえばこの上のほうに住所氏名問い合わせ情報などの入力項目も作れば、CAPTCHA付きの問い合わせフォームができる、という感じで応用できます。
[reCAPTCHAの可用性]
フォームの入力の肝の部分を外部サービスに委ねて大丈夫なの?という疑問もありますが、一応reCAPTCHAのFAQにはこうあります。
http://recaptcha.net/faq.html
- 現状でデイリー3000万回のユーザリクエストに耐えている。
- 複数のデータセンタとサーバ群でサービス提供をしている。
- 1日10万リクエスト以上あるようなサイトで使う場合は一報ほしい。
- セキュリティについては万全を期している。
とのことです。Googleに買収されたことで日本窓口ももしかしたらできるかもしれないですし、導入前には一度相談したほうがいいかもしれませんね。