前の日 / 次の日 / 最新

swk's log

2007-04-30 Mon

* 計算問題によるコメントスパム対策の実装 [logging] 4 users

というわけで [2007-04-21-1] 一週間ちょい使ってみているのだけど,今のところ完全封鎖できている.ここ程度の零細サイトであれば,それなりの効果が見込めると見てよいのではなかろうか.ちなみに一日あたりの攻撃数は,日によってばらつきというか波があるんだけど,50〜400 程度.

気になるのは,そもそもスパムでないコメントすら一切届いていないことなのだが,まあ普段からコメントを頂くことは稀なのでよしとしよう.

というわけで実装の話.くっつきBBSの $page_template_default に

<div class="arith">
<br>
コメントスパム回避のため,以下の足し算の答えを半角でご記入下さい: <br>
$arith_x + $arith_y = <input class="field" name="arith" value="">
<input type="hidden" name="arith_x" value="$arith_x">
<input type="hidden" name="arith_y" value="$arith_y">
</div>

みたいなのを仕込み,これを表示する直前に

my $arith_x = int(rand(9)) + 1;
my $arith_y = int(rand(9)) + 1;

とする.んで,if ($mode eq "write") { のときの処理として

my $arith = $q->param('arith');
my $arith_x = $q->param('arith_x');
my $arith_y = $q->param('arith_y');
if (!$arith || $arith != $arith_x + $arith_y) {
    exit;
}

を加える.実際には単に exit するのではなくて,ログを取るようにしてあるけど省略.


(追記) はてブでコメントを頂きました.

2007年05月02日 kazuhooku ?arith_x=1&arith_y=1&arith=2 みたいな固定化への対策が望ましいんじゃないかと思った。実質的には「何か」の入力を求めている時点でスパムよけとしては十分だろうけれども

http://b.hatena.ne.jp/entry/http://www.kagami.org/diary/2007-04-30-1.html

まったくおっしゃる通りで,パラメータの意味を理解すれば固定パラメータによる攻撃は可能です.パラメータとして渡すべき「問い」は「そこに書いてある」ので,原理的にはまあ同じことかと思ってたけど,実際の攻撃手順を考えてみるとそこにはちょっと敷居の差があるかなあと改めて思った.

というわけでちょっくら修正してみようかと思ったのですが,考え始めるといろいろややこしいので,別記事 [2007-05-05-1] で.

関連記事:
[2007-06-28-1] コメントスパムがやって来た
[2007-05-05-1] 計算問題によるコメントスパム対策 - 固定パラメータ攻撃対策
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Williamtut] Nice blog ) http://anmdcf7i.com my blog (2015-03-28 19:43:21)

<< 2007-04 >>
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
2930

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-02-13 02:02


Shingo W. Kagami - swk(at)kagami.org