記事No | : 16748 |
投稿日 | : 2022/02/18(Fri) 11:54:39 |
タイトル | : 拡張子datが多数作成される |
ID情報 | : kw3073 |
投稿者 | : ザマリンじじ |
URL | : http://zpsc.or.tv/cgi/captmail/captmail.cgi |
captmail/tmpファルダ下にBQkxq0ETyy9al54fmHD4.datと言ったランダムに名前が付けられたファイルが数千作成されていることを見つけました。このファイルはフォームに入力した際に一時的に作成され、正常にメールが送信されればすべてのdatは削除されるようですが、なぜ、これほどの数のdatが残されているのか謎です。
サーバ管理者に問い合わせたところスパムではないかとのことで、サーバのアクセス・ログにも海外サイト(.ruが半数以上)からのアクセスが昼夜を問わず1日に20から30件ほどの頻度で行われていることが確認されています。
スパムとしてアクセスしてきても画像認証でブロックされるため、処理が中断して、結果としてdatファイルがその回数分だけ残ってしまうようなことが起こっているのでしょうか?
一度でも正常にメールが送信できればdatファイルはすべて削除されるので、定期的にメール送信をすればよいのですが、datの増える理由がわかると安心できるので、どなたか教えていただければ幸いです。
記事No | : 16750 |
投稿日 | : 2022/02/18(Fri) 19:00:57 |
タイトル | : Re: 拡張子datが多数作成される |
ID情報 | : hirayama |
投稿者 | : hirayama |
>スパムとしてアクセスしてきても画像認証でブロックされるため、処理が中断して、結果としてdatファイルがその回数分だけ残ってしまうようなことが起こっているのでしょうか?
おそらくそのとおりだと思います。
>一度でも正常にメールが送信できればdatファイルはすべて削除されるので、定期的にメール送信をすればよいのですが、datの増える理由がわかると安心できるので、どなたか教えていただければ幸いです。
確認画面表示時にランダム.datが作成され、メール送信時に削除されるのが正常な処理ですが、メールが送信できないと処理が中断されて一時ファイルが削除されないようです。
この処理ははcaptmail.cgi698行目のsub check_tmp で行っていますが
不正なアクセスや、時間超過した場合はその時点で処理が中断するので
その先の削除処理まで進まず、一時ファイルも古いファイルも削除されないままになってしまいます。
一度でもこのチェックを通ってメール送信に成功すれば古いdatファイルもまとめて削除されるのですが、
拒否されるスパム投稿しかないとdatファイルがどんどんたまってしまうということになりそうです。
気になるようなら、sub check_tmp 内の
# ゴミ掃除
my $time = time;
opendir(DIR,"$cf{tmpdir}");
while( $_ = readdir(DIR) ) {
next if (!/^\w+\.dat$/);
# 60分以上経過は削除
my $mtime = (stat("$cf{tmpdir}/$_"))[9];
if ($time - $mtime > 3600) {
unlink("$cf{tmpdir}/$_");
}
}
closedir(DIR);
この部分を
# データ整合性
if ($$in{tmp_data} !~ /^[0-9a-zA-Z]{20}$/ || !-e "$cf{tmpdir}/$$in{tmp_data}.dat") {
error("不正なアクセスです!");
}
の前に移動すればdatファイルが数千個もたまることはないと思います。