« マッシュアップ・カフェでプレゼンします。 | メイン | age-surfin' 更新 2007.09.02 »

コメント・スパム対策

ここ数日コメントスパムの数が増えてます。

以前はトラックバックスパムの方が酷く、結局トラックバックを閉じることにしたのですが、コメント欄を閉じるのはちょっとやだなぁということで、下記対策を取ってみました。

コメントスパムの書込の内容を見ると、エントリのタイトルから日本語を抜き取って、それをコメント欄に入れているっぽいんですね。

つまり、最近のスパム判定のルールとして、「日本語が含まれないコメントはすべてスパムと判定する」というルールがメジャーになっており、それに対応するためにページをスクレイピングして、タイトルとコメント投稿CGIのアドレスを抜き出しているっぽいのです。あくまで「っぽい」ですけど。

なので、MovableTypeで、mt-comment.cgiの名称を変更して、設定ファイルを書き換えるというやり方は、あまり効果があがらないように思えます。

ということで、今回取った対策は、コメント欄のformのactionにはダミーのパスを記述しておき、onsubmitのイベントで、actionを動的に書き換えてやるという方法。

MT3.xだったら、「テンプレート」→「アーカイブ」→「エントリー・アーカイブ」で、コメントの投稿フォームのところが↓こんな風になっているところを、

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">

↓こんな感じに書き換えたらOK。

<form method="post" action="<$MTCGIPath$>mt-comm.cgi" name="comments_form" onsubmit="this.action='<$MTCGIPath$><$MTCommentScript$>';if (this.bakecookie.checked) rememberMe(this)">

変更後は、コメントを投稿してみて、ちゃんとJavaScriptが動作することを要確認。


さて、効果あると良いなぁ。