【JavaScript】メールフォームのスパム対策【PHP】

WEBサイトを運営していてメールフォームを設置すると、遅かれ早かれスパム投稿に悩まされるようになります。

メールフォームのスパム対策には、画像認証を付けるなど、いくつかの方法があるのですが、より簡単に実装できるのが、JavaScriptによるフォーム値の上書き方法です。

どういう方法かというと、フォームにhiddenタグを埋め込みトークンを値にセットします。このトークン値をPOSTされる際に、JavaScriptにより書き換えてしまうというものです。

以下、具体例です。

(略)
<input id="token" type="hidden" name="token" value="some_token">

<input onclick="change_token();" type="submit" value="送信">

</form>

上記コードには、hiddenタグに、トークンとして、some_tokenがセットされています。

この状態で送信すると、原則的には、スパムは、token=some_token を送信してきます。

この原則を、JavaScriptの関数により変更します。つまり、送信ボタンが押されたときに、トークンの値を書き換えて、その書き換え後の値でなければ、スクリプト側でスパムとして送信を弾くようにします。

JavaScriptは次のようになります。(外部ファイルにする場合)

function change_token(){
    var token = 10 * 10;
    document.getElementById('token').value = token;
}

ここでは、例として、トークンの値を10 * 10 の100 としています。送信されたスクリプト側(PHPなど)で、入力チェックをするのですが、このtokenの値が100でなければスパムによる送信と判断するわけです。

スパムは、JavaScriptを実行しないことを利用したものですが、何も対策をしないよりは効果があると思います。

以上です。

カテゴリー: JavaScript, PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。