【スパム対策】Javascriptを無効にしている環境でGoogleのreCAPTCHAは有効なのか試してみた

お問い合わせフォームを設置しているとどうしても悩まされるのが迷惑メール、スパムメール。

 

弊社のフォームページでも一時期おびただしい数のスパムメールがあったので、対策にGoogleのreCAPTCHAを入れました。

V3になって、「ロボットではない」にチェックを入れたり、信号機の画像をクリックしたりしなくても使えるようになって、ユーザーにストレスを与えずチェックできるのがいいですね。

 

reCAPTCHAを導入したところスパムメールがピタリと止まりました。さすがGoogle先生!

 

reCAPTCHAはJavascriptとサーバー側の処理を組み合わせているみたいなのですが、もしブラウザでJavascriptの機能をOFFにした場合、どのように動作するのか気になったので調べて見ました。

 

reCAPTCHAは「スコア」を元に人間かどうかを判定している

簡単にreCAPTCHAの仕様について調べて見たこととしまして、

 

reCAPTCHAはJavascriptでユーザーが人間かボットかを判断しています。

 

それに使われている評価値を「スコア」というようなのですが、どのようなアルゴリズムかは分からないですが、Googleが機械学習で日夜精度を高めているとのこと。

 

しっかりと弊社のスパムが止まってのできっとその評価は正しいのだと信じております。

 

サーバー側でGoogleのスコアをチェックする

フォームの送信が行なわれた際、サーバー側でGoogleにリクエストをして、今フォームを送ったのが人間かボットかの結果を取得します。

 

もしNGだった場合は、メールを飛ばさずにエラー画面を出したり、しれっと送ったふりをして完了画面を出せばスパムメールが届かないということになります。

 

この内容を見て思ったのはJavascriptが無効の場合、そもそもGoogleがそのアクセスを人間かボットか判断できないので、サーバー側でNGが返ってきて、つまりボット扱いされてメールが飛ばないのではないかということです。

結論:reCAPTCHAを入れたフォームでJavascirptを無効にしてもメールは届く

早速、ブラウザのJavascriptの機能を無効にしてフォームを送信してみました。

 

結果としては、フォーム送信は通常の成功したフローになり、メールも届きました。

 

予想していた結果とは違ったのですが、やはりJavascriptが無効だからreCAPTCHAが動作せず、送れてしまうのでしょうか。

 

今回は結果が分かっただけで一定の収穫があったので、調査としては以上となります。

 

また機会がありましたら、他のフォームのスパム対策についても記事を書きたいと思います。

WEBエンジニアです。 WordPress、PHPを主に使ってWEBサイトやWEBアプリケーションを制作しています。