webのシステムでは、ユーザからの情報を受け取る方法としては以下のような方法があります。

  1. メールを使って受け取り(webではないので外す)
  2. HTMLのformを使って受け取り
  3. HTTPプロトコルを使ったファイルストレージでの、ファイル受け取り
  4. 今はあまり使わないftpプロトコルでのファイルでの受け取り

があります。だれからでも、何でも受け取らないようにどこでも細工をしていて、会員制をとったり、openid(他のシステム等)などを使ってユーザの特定ができるようにしています。非会員から会員になるには当然セキュリティもなくサーバ側で受け取り何らかの方法で会員登録してそれをユーザに通知となります。

非会員の状態(会員になる前)はどうしても、匿名での入力の受付はwebシステムでは必須となります。そうなると、どうしてもいたずら目的、または情報公開目的として機械的に入力されてしまって、本物なのかどうか、または紛れ込んでいる本物を探すのも一苦労となります。

このためにいろいろな方法がありますが(絶対に破られないとは言い切れないけど破る努力をしてもあまり実らない)そのなかの対策として captchaを使ったものがあります。

 

captchaを自分で作ることも当然できますが、captchaを実装することが本来の目的ではないのですからできるだけ手を抜きたいと思うのが人の常です。

で、てっとり早くつかえそうなものを見つけて使ってみたというのがこの内容です。

https://www.google.com/recaptcha/intro/index.html

を使ってみました。

0から作ることを考えると簡単なこと、この上ありません。

上記ページで登録を行い、key を取得しておきます。

入力フォーム(form.html)は、
javascriptの読み込みを追加(headタグの間に)

<script src=’https://www.google.com/recaptcha/api.js’></script>

formタグ内部に、
<div data-callback=”enableSubmit” class=”g-recaptcha” data-sitekey=”登録したときのキーを指定”></div>

です。

formのactionのPHP受け取り側は、(以下の例はPHPとPHP用curl,jsonがインストールされている必要があります。curlのセキュリティで外部へのアクセスの禁止設定がデフォルトになっている場合がありますので外部の許可を与える必要があります)

function checkCaptcha()
{
$secret_key = ‘登録した木のキーを指定’ ;
$endpoint = ‘https://www.google.com/recaptcha/api/siteverify?secret=’ . $secret_key . ‘&response=’ .         $_POST[‘g-recaptcha-response’] ;

$curl = curl_init() ;
curl_setopt( $curl , CURLOPT_URL , $endpoint ) ;
curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ;
curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ;
curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ;
$json = curl_exec( $curl ) ;
curl_close( $curl ) ;
return json_decode($json,true);
}

のcheckCaptcha()->{‘success’} が trueまたはfalseでの判断です。後はformでの受け取りとこの結果を組み合わせて表示を行えばいいとなります。

上記サイトで登録してキーさえあればこんなの数分で captcha機能を formに入れられるという楽なものです。フォーム入力した内容が google側に送られるわけでもなく、セキュリティがかなり甘いわけでもなく、お手頃感があります。

ただ、これには欠点もあります。画像が日本人向けではないのでだめな場合があります。出てくるのは、魚はどれか、クッキ―はどれか? 標識はどれか? 通りの名前の表示はどれか? などアメリカでの写真っぽいものであって、日本ではあまり見ない写真から選ぶ必要があります。またその写真もはっきりしていないピンボケだったりで100発100中で答えられるわけではありません。気が短い人は「ふざけんな」といって、入力をやめてしまうかもというくらいのものです。

よってこのcaptchaはwebサーバ側はお手軽ですが、captchaで判断される登録側はお手軽ではない、ある程度切羽詰まった状態でなにがなんでも入力したいという人向けですので、ちょっとお試しのようなサービスで人をかき集めるための敷居の低い入力向けでは全くありません。

使える条件は選びますが手軽に設定できるので是非使ってみてください。

 

関連記事

ページ上部へ戻る