Googleフォームのスパム対策をした
制作を担当したサイトに設置したお問合せ用のGoogleフォームに毎日大量のスパムが来るため、対応をしました。
フォームの構成について
名前・電話番号・メールアドレス・問い合わせ内容欄だけのシンプルなフォームです。
問い合わせ内容欄だけ複数行(<textarea>)で後は1行欄(<input>)です。
なおかつ、フォームは独自HTMLにし、そこからGoogleフォームにデータを送り、送信後に独自のサンクスページを設定してあります。
参考:Google FormをHTML/CSSでデザインしたフォームで運用する方法
スパムの内容について
名前は居そうな架空(?)の外国の名前・電話番号にはランダム英字・メールアドレスには架空のメールアドレス・問い合わせ内容欄にはランダム英字という内容でした。
対応の方向性
いろいろ検討し、「スパムっぽい内容の場合、送信させない」という方向性で対応することにしました。
「スパムっぽい内容」とはどういうことか?ということを考えて、スパムのみ弾き、人間からの問い合わせを弾かないようにするようにする必要があります。
対応(1)HTMLで電話番号を限定する
まず電話番号を限定しました。inputにpatternを設定することでできます。
実装方法:<input type="tel">(MDN Web Docs)
●結果→スパムは電話番号にランダム数字を入力して突破
対応(2)Googleフォームで日本語が入力されていない投稿を限定する
Googleフォーム側の欄に「日本語が1文字も存在しなかったら弾く」という設定をしました。日本語サイトの日本語のお問合せフォームだから実装できる設定です。
正規表現に以下の内容を入力します。
.[\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]+.
これでひらがな・カタカナ・漢字が「存在しない場合」に弾くことができます。
●結果→スパム投稿がなくなった
その後
とりあえず今はこの暫定対応で問題ないですが、日本語を含むスパムが発生した場合は弾けないので悩ましいところです。
この記事が気に入ったらサポートをしてみませんか?