人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

フォームメールcgi の加工(スパム排除)について教えて下さい。

http://www.pet-thailand.com/formmail.txt
(txtファイルとしてアップしています。)

上記フォームメールを長年使用していますが、
最近は英語圏の自動ソフトによる、スパムメールが多く
とても困っています。

送られてくる、スパムメールは、ほとんどが
フォームに設置しているtextarea に、URLを書き込む形で
フォームを送信してきます。

私の場合、textareaにurlが書き込まれたフォームは
全く必要としないのですが、これらtextareaに、URLを含むメールを
排除できないものでしょうか?
(フォームの他の箇所でも、URLを必要とする箇所はありません。)

"http://"を含むフォーム送信を禁止する等、
何か加工方法、アイディアがあれば、教えていただけると助かります。

どうぞよろしくお願いします。


●質問者: Tomo
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI http:// txt URL いもの
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント

(1)GETによるパラメータ送信は拒絶し POSTのみ受け取るようにするだけでも、かなり減ると思われます。

フォームHTMLのほうでGETを利用しているのであれば、そちらもPOSTに変更する必要があります。

 if ($ENV{'REQUEST_METHOD'} eq 'GET') {
 # Split the name-value pairs
 @pairs = split(/&/, $ENV{'QUERY_STRING'});
 }
 elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
 # Get the input
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 
 # Split the name-value pairs
 @pairs = split(/&/, $buffer);
 }
 else {
 &error('request_method');
 }

↓↓↓↓↓

 if ($ENV{'REQUEST_METHOD'} eq 'POST') {
 # Get the input
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 
 # Split the name-value pairs
 @pairs = split(/&/, $buffer);
 }
 else {
 &error('request_method');
 }

(2)件名が空白だったり半角英文だけで構成されているような場合は拒絶するようにすれば、さらに減ると思われます。

 if (defined($Config{$name})) {
 $Config{$name} = $value;
 }

↓↓↓↓↓

 if (defined($Config{$name})) {
 if (($name eq 'subject') && ($varue =~ /[^\x80-\xff]/) {
 &error('request_method');
 }
 $Config{$name} = $value;
 }

(3)本文にURLを含んでいれば拒否して良いというのであればさらに減るとは思いますが、

上記2点があれば、もしかしたら不要かもしれません。

 else {
 if ($Form{$name} ne '') {
 $Form{$name} = "$Form{$name}, $value";
 }
 else {
 push(@Field_Order,$name);
 $Form{$name} = $value;
 }
 }

↓↓↓↓↓

 else {
 if ($varue =~ /http:\/\//) {
 &error('request_method');
 }
 if ($Form{$name} ne '') {
 $Form{$name} = "$Form{$name}, $value";
 }
 else {
 push(@Field_Order,$name);
 $Form{$name} = $value;
 }
 }

※以上、動作確認はしておりません。

※(2)は文字コードEUC-JPの場合です。他の場合は変更が必要です。

※エラー表示のほうは追加してませんので、どこで引っかかっても同じエラー処理が動きます。

※プロバイダの迷惑メールフィルタもあわせて使う事をお勧め。

◎質問者からの返答

ご回答ありがとうございます。

大変恐れ入りますが、たとえば

全ての入力箇所(textarea, radio bottun 等々)で、入力された値が

半角英数の場合に、拒否するような、加工方法を合わせて教えていただけると、とても助かります。

どうぞよろしくお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ