PHP

PHP

お問合せフォームのスパム対策

お問合せフォームからスパムメールが大量に届くという報告が入りました。

 

スパムメールの内容はこれです。
===========================================================


お名前:注冊送188菜金980856点com加威信v202368
メールアドレス:523564608@qq.com


===========================================================

この内容だけ見ると、

明らかに中国からのスパムのようです。

 

で、念の為にアクセスログを調べてみると、

223.130.xx.xx

というIPアドレスからお問合せフォームへのアクセス履歴が大量に残っていたので、

# curl ipinfo.io/223.130.xx.xx/country

でIPアドレスが割り当てられている国を調べてみると、

「PH(フィリピン)」でした。

 

発信元はフィリピンだけど、送っているのは中国人?

フィリピン国内に置いてあるサーバを利用・経由している?

ということですかね?
※まさか中国語が堪能なフィリピン人がわざわざ中国人の振りして送っていることもないと思いますし。。。

 

取り合えず、

.htaccessに以下を記述して上記IPアドレスからのアクセスをブロックです。
=============================
order allow,deny
allow from all
deny from 223.130.xx.xx
=============================

 

ただ、

これだけでは根本的な解決にはならないので、

組んだのもかなり前のものですし、

ここは組み直してやることに。
※恥ずかしながら、重要な脆弱性対応が諸々漏れているフォームなので。。。

 

で、重要なのはフォームが辿ってきたルートが正しいかどうかのチェックを入れてやることです。

 

ここは、トークンを発行してユーザーが確認画面から正しく移動してきたかのチェックを行います(CSRF対策)。

 

本当はリファラーチェックも入れてやればより強力にはなるのですが、

諸々の問題で、

今回はそちらは見送ることになりました。

 

それと、

悩むのは「お名前」の入力欄の制限です。

 

「お名前」には「注冊送188菜金980856点com加威信v202368」というように本来は日本人の名前には含まれない半角英数が入っています。

 

なので、

本当は全角文字以外が含まれていればエラーで弾いてやる仕様にしたいのですが、

個人的にはフォームの入力制限に関しては、

ユーザーの離脱を避けるためにもあまり厳しくはしたくないです。

 

ここは悩むところですが、

海外からのお問合せはないという前提(実際にないですし)で、

半角英数字が含まれていれば弾いてやることにします。

 

あと、画像認証を入れてやるのも対策にはなるかと思います。
※私は、ユーザーの離脱が怖いので、極力入れたくはないですが。

 

因みに、

IPアドレスの割り当て国を調べる際に、

丁度Tera Termを立ち上げていたので、

コマンドラインから

# curl ipinfo.io/IPアドレス/country

と打って調べましたが、

https://ipinfo.io/IPアドレス/country

のURLをブラウザから叩けば国名を返してくれます。

 

さらに、

https://ipinfo.io/IPアドレス/

と叩けば、

もっと詳しい情報を返してくれるので、

何か良く分からないIPアドレスからアクセスがあった場合に、

簡単に情報を調べるのにはとても便利です。

関連記事

  1. ubuntu

    PHP

    PHPの最新リポジトリを追加でエラー!!

    Ubuntu(バージョンは16.xx)で構築したサーバに、PHP7…

  2. PHP

    PHP

    PHPでは’01’と’1’は同じなの!?

    PHPで、などとすると'01'と'1'は同じってみなされるの?…

  3. PHP

    PHP

    【PHP】count関数でエラーが出ました。。。

    かなり昔に弊社が作成したシステムがあるのですが、諸々の理由で別サー…

  4. PHP

    PHP

    mb_send_mail()を使うと、機種依存文字が「?」に文字化け!!

    お問い合わせフォームにwindowsの機種依存文字である「﨑」を入力す…

  5. PHP

    PHP

    お名前.comのVPSサーバ(KVM)にPHPをインストール

    お名前.comのVPSサーバにPHPをインストールしてみました!!…

  6. PHP

    PHP

    mb_strlen()関数の注意点!!

    PHPでバイト数ではなく文字数を取得したい場合、mb_strlen…

最近の記事

  1. PHP
  2. 丹波の栗
  3. ブログ アイキャッチ
  4. SSL(HTTPS通信)
PAGE TOP