web site

Webフォームのボット送信被害

一般的にWebフォームは、PHPを使用して
フォームの受け取りやメール送信を行うのですが

ボットと呼ばれる、自動送信プログラムで
勝手にフォームが送信される、ある意味ハッキングがあります。

※確認ページがない場合、いきなりのフォーム送信なので
被害が出る可能性が高いです。

PHPからフォームを出力(HTML)する際に、重複送信を防ぐ目的で
フォーム内に、毎回ランダムなhidden値 (フォーム上には表示されない項目)を
追加して、フォームの受信時にそのhidden値を確認し
メールを送信する仕様にしていました。

これは、フォームを送信される「人」に対しての対策で
フォームのタグ(HTML)を見れば、hidden値は確認できてしまいます。

上記の場合、PHPがサーバーサイドで作成したものは
ページのタグで全て丸見えになり、その値を元に
ボット等がフォームを送信できてしまいます。

ここに、JavaScript(jQuery)のスクリプトをいったん挟んで
「送信ボタン」のタイプを「submit」から「button」に変更。

送信ボタンが押されたら、jQueryでクリックを確認し
jQueryからフォームを送信する設定に変更します。

サーバーサイド(正確には中間ですが)で動くボットは
ブラウザーサイド動くjQueryは見えないので
簡易的ですが、勝手に送信される被害は防ぐことができます。

本気でハッキングされた場合、jQueryのJsファイルを読み込んで
同じ動作をさせると送信できますが、自動攻撃用のボットなら
そこまで手の込んだことはやりませんので、一先ずは回避できると思います。

それを乗り越えてきた場合、毎回ランダムなhidden値を、最初のフォーム表示時に
PHPで生成しておいて、SESSIONに記憶させておき、送信ボタンがクリックされた場合
jQueryから、Ajax送受信で別のPHPからhidden値を取得、フォームに追加。

送信後にフォーム受け取りPHPにてhidden値とSESSIONを確認し
合致すればメール送信、と、簡単なチェックを入れることで
もう少し頑丈に防げると思います。

なんだか、フォームのボット送信が増えてるみたいなので
ザックリですが、記事にしてみました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です