コメントスパム対策 (イメージパスワードでブロック)

2004. 03. 10. 23:50

コメント入力時にイメージでパスワードのimg&src出力プログラムsrc出力plugin
tr版プログラムtr版pluginを追加。
pluginはComment Listing Template, Comment Preview Template, Comment Error Templateのformの間で
<MTPass n="4"$>
プログラムの方はIndividual Entry Archive で
<!--#include virtual="./pass.pl?cmd=text" -->
と使って、
<input type="hidden" name="key" value="crypt化したpass" />
<img src="./pass.pl?cmd=img&amp;key=エニグマで暗号化したpass" />
となった。
その下に
上の文字を半角で入力。
<input name="pass" type="text" value="" />
と書いといた。

あとはこの辺に書いてあるみたいにする手もあるけど
エラーメッセージがあったほうが格好いいような気がするので、
MTの lib/MT/App/Comments.pm のsub postの

if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}

の下あたりに以下の文を追加した。

if(!$q->param('pass') or !$q->param('key')) {
return $app->handle_error($app->translate("No pass.")); }
my $salt = 0;
if($q->param('key') =~ /^\$1\$/) { $salt = 3; }
crypt($q->param('pass'), substr($q->param('key'), $salt, 2)) eq $q->param('key')
return $app->handle_error($app->translate("Invalid pass.")); }

pluginだけでもできるがIndividual Entryのpassが変わらないのが面白くなかったのでこうなってしまった。
何か汚いので、もうちょっと何とかならないか考えてみる。
あと、プログラムも実に無駄が多いので変更しないと。

---

2004-03-12 2-:32
tr 版追加。

2004-05-14 22:44
URI にそのまま&が書いてあったのを&amp;に直す。アホだ。

[ ほげ ]
idurumi
コメント

ありがとうございます。
参考にさせていただきます。(^^)/

Posted by: mori2 : 2004.04.24. 16:20

TB重複してしまいました。申し訳ありません。

Posted by: ヴァリウム男爵 : 2004.04.24. 22:27
コメントする




保存しますか?



上の文字を半角で入力してください。