ダイナミック・パブリッシングに対応したコメントスパム用のプラグインを見つけたので試してみました。実は見つけたのは少し前だったのですが、他のことに時間をさいていたので、エントリーが遅れました。
これはjavascriptを使ってブラウザから投稿ボタンを経由しないとコメントが出来ないようにするものらしいです。確かにサーバーのエラーログなどを見ているとスパマーは直接コメント.cgiにポストを試みるような動きをしているので、かなりの効果が期待できるのではと思います。
情報元は下記のサイト様から。ありがとうございました。
WEBデザインBLOG MT-Keystrokesプラグイン Movable Typeコメントスパム対策
以下、導入のための覚え書きです。
1.プラグインのセット
上記のサイトから「keystrokes-0.1.5.tar.gz」「keystrokes-0.1.5.zip」どちらかをダウンロードして解凍。
keystrokes.pl を「plugins」ディレクトリにアップします。
function.MTKeystrokes.php を「php/plugins/」にアップします。
*keystrokes.plは静的生成用のものですが、ダイナミックを使用している際にもこれも忘れずに「plugins」ディレクトリにアップしておきます。プレビュー画面で必要になりますので。
2.エントリーアーカイブのテンプレートに専用タグを追加
■form開始部分
赤字のタグを以下の部分に追加します。
<MTEntryIfCommentsOpen>
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<$MTKeystrokes$>
<input type="hidden" name="static" value="1" />
<input type="hidden" name="entry_id" value="<$MTEntryID$>" />
■コメント入力部分
<textarea>タグ内に以下の赤字の記述を追加
<textarea id="comment-text" name="text" rows="15" cols="50" onkeypress="keystrokes(this.form)"></textarea>
■投稿ボタン
投稿ボタンの<input>内に以下の赤字の記述を追加
<input type="submit" accesskey="s" name="post" id="comment-post" value="投稿" onclick="keystrokes(this.form)" />
3.コメントプレビューテンプレートにも同様に追加
コメントプレビューを使う場合はプレビューテンプレにも2と同じ内容を追加しておきます。でないとプレビュー画面からの投稿ができなくなりますので(keystrokes.plはここで必要になります)。
テストブログ(3.34ダイナミック環境)で動作確認してみましたが問題なく投稿できました。画像認証のような手間をとらせないので、かなりおすすめなのではないでしょうか。
☆ちょっと余談☆
ここのブログでは上で紹介しているプラグインとはちょっと違った方法でコメントスパム対策をしていますが、やはりjavascriptを使っているので、結果としては似たようなことをしていたのかなと思いました。
私がやっていることはリネーム後のcgi名をスパマーに知らせないために「javascriptでコメントcgiをソースから完璧に消去する」ことなのですが、それが結果として「ブラウザを経由しないと投稿ができない」という状況を生み出していたので、対策以後スパムが来なくなったのはその効果もあったのかなと思いました。
私が自己流でやっていることよりはプラグインを使ったこの方法のほうがずっとスマートだと思いますので、スパムに困っている人は試してみられるといいと思います。
