解決したいこと
- 会社のお問合せフォームから悪意のある内容が送信されてくる
- その結果関係者にスパムメールとして送信される。
このまま放置してしまうと何かの拍子に悪意のあるurlを踏んでしまい
ウイルス感染なんてこともありえる。
前提
- reCAPTCHA(v2)は設置されている
- フォーム内容
- name (必須)
- kana (必須)
- tel (必須)
- email(必須)
- comment(必須)
reCAPTCHA設置しているし必須項目も設置しているし困ったものです。
reCAPTCHA全然仕事していないなぁとか思いましたが
調べるとreCAPTCHA突破できるプログラムできるらしく仕方ないかという感じです。
botの手法
botの手法を考えると
urlを無作為に叩いて
自動入力でプログラムに指定したinputタグに入力しでpostする
というのが相場かなと思います。
対策アイデア
調べたり、個人的にいいのでは?と思ったアイデア。
- reCAPTCHA v3にする
- reCAPTCHA v3はbotと人間のWebサイトでの行動パターンを自動で学習し、今Webサイトに訪れているユーザーがbotか人間かを自動で判断します。そのため、ユーザー側からはreCAPTCHAが見えず、当然ながら一切の操作や手間が不要です。
- reCAPTCHAも進化しているのでこれに変えてみるのがオーソドックスな対応かもしれないですね。
- reCAPTCHA v3はbotと人間のWebサイトでの行動パターンを自動で学習し、今Webサイトに訪れているユーザーがbotか人間かを自動で判断します。そのため、ユーザー側からはreCAPTCHAが見えず、当然ながら一切の操作や手間が不要です。
- ipアクセス制限
- ipを取得しておき悪意のあるユーザーを排除する
- 毎度毎度やるのはあまりに手間がかかりそうですね。
- ipを取得しておき悪意のあるユーザーを排除する
- お問合せ内容に必須項目を設置する
- チャックボックスを設置する方法ですね。例えばお問合せ内容を選択してもらうとか。
- これは簡単でいいかもしれないですね。ただ仕様上必要ないのであればスパム対策という都合で入れるのは違うかもですね。
- チャックボックスを設置する方法ですね。例えばお問合せ内容を選択してもらうとか。
- リンクの送信を禁止する
- お問合せ内容にリンクが入っている場合は弾くという対策方法ですね。
- これは本当にリンクを送りたいひとに対してUXが悪くなりそうですね。
- お問合せ内容にリンクが入っている場合は弾くという対策方法ですね。
- 項目名の変更
- これは別の項目名にするというものですね。nameとかtelとか自動入力しやすそうな項目なので捻りを加えようというものですね。
- これはbotの手法が狙った項目に対して入力を行っている場合にのみ有効な対策ではあるが、そのロジックで動かしているのか確証がないので無駄足になりそうな気がしますね。
- これは別の項目名にするというものですね。nameとかtelとか自動入力しやすそうな項目なので捻りを加えようというものですね。
- 英名のチェック
- 海外からの攻撃の場合大体が英語名で入力されるのでそれを判定します。
- これは有効そうな対策ですね。攻撃された内容をみるとほぼ全てが英名での登録で、日本でのみビジネス展開している場合英名のお問合せはよっぽどないので有効と思う。
- 海外からの攻撃の場合大体が英語名で入力されるのでそれを判定します。
- 擬似フォームの設置
- フォームを隠して設置しておき、このフォームに内容が入ってリクエストが来たら弾くというものですね。
- botのプログラムが狙いの項目に対して自動入力するプログラムであればcontentとかいう項目名にしとけば、大体のプログラムに入ってそう。これもbotの手法が明確でない以上空振りになりそう。でも決まったら楽しそう
- フォームを隠して設置しておき、このフォームに内容が入ってリクエストが来たら弾くというものですね。
終わり。