メールフォームCGIへのスパム
CGIに直接アクセスするスパムに困惑
ホームページに掲載したメールアドレスにスパムメールが届くことはよくありますが、
ホームページ上に設置しているメールフォームの送信CGIプログラムに直接アクセスし、送ってくるスパムメールに困惑しています。
送られてくるメールは右のようなもので、対象方法を考えてみました。
メールフォームを変える
現在使用しているメールフォームのCGIは古い「インターネットショップのためのCGI&JavaScript」に掲載されていたプログラムです。
それを、ベースに改造しながら使用しています。
例えば、昔はホームページ側で送信先アドレスの設定を行なっていましたが、改造してCGI側で送信先を設定できるようにしております。
2001年発売の書籍、スパムなど無かった時代のCGIがベースですので、スパム対策されたCGIに乗り換える方法もあります。
探してきたのが下記のメールフォームです。
新たにホームページを作成する場合は、上記のメールフォームを使用しています。
無料だし、EUCやUTF8にも対応しているのでブログなどにも設置可能です。
でも、既存で使用しているフォームがかなりあるので切り替えは大変です。
メールフォームCGIを改造して対策する
メールフォームから送られてくるスパムメールは下記のようなメールです。
返信しても宛先不能だし、記載しているURLをクリックしてもnot foundでホームページが存在していません。
何の為に送ってくるスパムなのか??
送られてきたメールを再度詳しく見ると、入力できる項目は全てローマ字と数字で埋められています。
これは、未入力項目を弾く設定でも送れるように考えているようです。
「お電話番号」の項目もローマ字で埋められています。
そこで、電話番号の項目に数字以外の文字が入力されたら、エラーを返して送信できないようにする方法を考えてみました。
改造方法の思案
スパムメールを送る人は電話番号の項目にも入力し大文字と小文字の混じったアルファベットをランダムに入力して送ってきます。
逆にメールフォームの利用者電話番号項目は
- 電話番号を入力しない(ブランクの状態)
- 半角数字で入力する
- 半角数字とハイホンで入力する
- 全角数字で入力する
- 全角数字とハイホンで入力する
のパターンが考えられます。上記をベースにスパムメールは止めて通常のメールは送れるように改造してみました。
メールフォーム改造の備忘録
フォーム側の修正
まず、ホームページのメールフォーム部分の改造です。
「お電話番号」と日本語ではCGIで処理しにくいので「tel」と改めました。
↓
tel内容の読み込みとブランク時の対応
telの内容をメールフォームCGI内部で文字列として処理しないといけないので、読み込んで$telに代入しました。
同時に、もしブランクだった場合「-」を代入することにしました。
tel内容が数字と記号だけか判別するサブルーチン
読み込んだ$telが全角又は半角の数字と記号だけなのか判別するサブルーチンです。
もし、全角の日本語やローマ字を入力すると数字だけではないと判別します。
このサブルーチンはCGI・Perl例文集の 【CGI・Perl】半角数字だけかチェックするを参考にしてみました。
tel内容にローマ字が含まれるとエラー表示
tel内容にローマ字や日本語が含まれると、エラーを返すように設定してみました。
あまり、キレイなプログラムではありませんが、現在の実力です。
これで、スパムが止まってくれるといいんですが・・・?
電話番号から「tel」に変えたので、判断して数字に変わるかもしれませんね
いくつか対策を施して様子を見る事とします。
お役に立ちましたら下記のクリックをお願いします。
投稿日時: 2009年07月04日 10:24 [ EDIT ]