« 先々週の気になるPC&mobile | メイン | Googleキャッシュ文字化け2006 »

2006/03/27(月) 19:38:47

spam対策実装[ 約定期blog ]
spam】,【コメント】,【リンク】,【URL】,【特殊タグ化】,【MT】,【Movable Type

あれからさらに2、3のspamコメントがきてたので、思い切って掲示板に導入したspam対策をこっちにもいれてみることにした。

大抵のspamコメントはコメント中のタグ使用が可能か、そうでなければ自動ハイパーリンクされるであろうことを狙ってコメントに「http://~」や「<a href="http://~」というURL文字列を含んでいる。
aタグリンクについては以前から蹴るようにしてあったし、そもそもタグ使用を許可してないので意味がないのだが、http://については私自身もURLを含んだコメントをするため全面禁止にすると辛いので悩んでいたが、今回掲示板に導入した方法であるリンクの特殊タグ化を行った。

リンクの特殊タグ化というのは、http://という文字列を含むことを禁止する代わりに、[[http;www.google.co.jp/;Google 日本]]のように書けばGoogle 日本のようなリンクになるというものである。これはMT標準のオートリンクを少し弄ることで実現する。

まず、MTのオートリンクはMTのディレクトリ以下のlib/MT/Util.pmにあるmunge_commentというところで行っている。
そこで、もともとあるオートリンクの下に、特殊タグによるリンク機能を追加すればOKだ。


sub munge_comment {
my($text, $blog) = @_;
unless ($blog->allow_comment_html) {
$text = remove_html($text);
if ($blog->autolink_urls) {
$text =~ s!(http://\S+)!<a href="$1" target="_blank">$1</a>!g;
$text =~ s!\[\[(.*?);(.*?);(.*?)\]\]!<a href="$1://$2" target="_blank">$3</a>!g;#追加する箇所
}
}
$text;
}

一部のCGIなどでデリミタ(区切り)としてセミコロンが使われるので問題がないわけではないが、しばらくこれで様子を見ることにする。
しかし、元々コメントの少ないこのblogのことなので、問題があっても発覚するのがかなり後になるかもしれない。

追記(2007/6/17 22:13):
タグを&lt;や&gt;にするのを忘れていた。修正。

投稿者 NAOYA : 19:38:47

Trackback Pings

このエントリーのトラックバックURL:

spamTBが増えてきたので、2007/5/23からリファラチェック(言及リンクチェック)を導入しました。
トラックバックを行う場合、トラックバック元のページにこのエントリのURL(Aタグリンクでなくても可)が含まれている必要があります。
さらに、トラックバック元ページに対してSB-RefererCheckerのアクセスを許可している必要があります。
以上の条件を満たしていない場合は残念ながらトラックバックを行うことが出来ません。その場合は、代わりにコメントを書くことを検討してください。
ただし、上記の条件を満たしていても、記事の内容に関連がない、宣伝目的のみである、アダルトコンテンツを含むなどの理由でトラックバックを削除することがあります。ご了承ください。

コメント

コメントする




保存しますか?


spam防止のため、ハイパーリンクを張るには[[http;www.google.co.jp/;Google 日本]]という特殊なフォーマットを使う必要があります。
上記の例だとGoogle 日本のように変換されます。

ReadMe! x~