2005年02月07日

●トラックバックスパム対策(その2)

Ogawa::Memoranda さんご提供のスパム対策プラグインに対し、下記の改変を行いました。

    プラグイン:Quasi-Spam Filter Plugin
    改変内容:トラックバックのタイトル文字列をフィルタ対象に加える
事後になってしまいましたが改変についてOgawaさんご本人の許諾を頂けましたので、引き続き本エントリーにて公開したいと思います(経緯の詳細等は追記をご覧ください)。
以下、元の記事です。


オリジナルのプラグインは、トラックバックについては概要(excerpt)のみがフィルタ対象となっています。ということで、タイトル(title)にはフィルタ文字列が存在するのですが本文にフィルタ文字列が含まれないトラックバックスパムが到来しました。
本文に含まれる文字列をフィルタ対象にするという手もありますが、本文に特異な文字列が存在していないこととタイトル部分もフィルタ対象に含めた方が効率良さそうなので、quasi-spamfilter.pl を下記の通り修正しました。

sub tbping_filter {
    my ($eh, $app, $ping) = @_;
    return !is_tbping_spam($ping->excerpt);
    return !(is_tbping_spam($ping->excerpt) | is_tbping_spam($ping->title));
}

sub tbping_throttle_filter {
    my ($eh, $app, $tb) = @_;
    my $q = $app->{query};
    return !is_tbping_spam($q->param('excerpt'));
    return !(is_tbping_spam($q->param('excerpt')) | is_tbping_spam($q->param('title')));
}

sub tbping_error {
    my $app = shift;
    my $q = $app->{query};
    my $mode = $q->param('__mode') || $app->{default_mode};
    return if $mode ne 'ping';
    if (is_tbping_spam($q->param('excerpt'))) {
    if (is_tbping_spam($q->param('excerpt')) || is_tbping_spam($q->param('title'))) {
    $app->add_methods('ping' => sub { });
    $app->_response(Error => 'Spam TBPing!', Code => 403);
    }
}

動作は一応確認しておりますが適用に際しましては個人の責任で行ってくださいますよう、よろしくお願い致します。なお本改変に対する改善案をOgawaさん本人より頂きいておりますので、興味のある方は該当記事のコメント欄をご覧になってください。


2005.02.17 追記
本改変について「(CCLの条件から外れた形で許諾なしに)改変を掲載しているのはまずいのではないか?」というトラックバックを頂きまして、確かにご指摘の通りでしたので著作権者のOgawaさんにお詫びと許諾の旨、ご連絡致しました。
頂いた回答を引用させて頂きますと「Quasi-Spam Filter Plugin はブログ本体とは異なり、Artistic License に基づいて配布しています」とのことで、

  • Quasi-Spam Filter Pluginに基づいていること
  • 改変内容の明記
を条件に許諾いただきました。これを受けて記事を若干修正致しました。
なお無断で改変を行っていたことは事実ですので、このような記事を投稿しましたこと、謹んでお詫び申し上げます。

11:20 | Comments [19] | Trackbacks [37]

2005年02月05日

●トラックバックスパム対策(その1)

数日前に発生した突然のトラックバックスパムは色々なサイトに送信されていたみたいですね。ご近所のサイトをみたところ

よりがありました。
個人的には先日より利用させて頂いているコメントスパム対策が活用できるのではないか?と考えてましたが、考えるだけです(笑)。と思っていたところ、がバージョンアップされてまして、トラックバックスパムにも対応するようになっていました。
ということでこちらを利用させて頂くことに。


前回との差分は、

# Set your spam pattern
our $COMMENT_PATTERN = '<h1>|<a\s'; # H1 or A elements
our $TBPING_PATTERN = '<h1>|<a\s'; # H1 or A elements

と、トラックバック用の変数が追加されています。赤字の部分を
our $TBPING_PATTERN = 'hoge1|hoge2|hoge3';

とし、最近受けたトラックバックに含まれる一部の文字列に変更しています。

23:55 | Comments [0] | Trackbacks [0]