2005年02月15日

TrackBackスパム対策 Lv1

下に書いた通りトラックバックスパムでの爆撃を許してしまったので、対策を取ることにしました。

本当は「相手のページ中にこちらのURLが無ければTrackBack不成立」という「はてな方式」を採用するのが一番楽で確実なんですが、トラックバックが来る度にそれをやるとサーバのパワーが無駄に掛かって仕方がないので保留。

で、とりあえず、サーバの負荷が小さくて簡単に出来る実装ということで次のようなものを実装してみました。

ルールは簡単
「トラックバック元のURLのホストを正引きして、それで得たIPアドレスと、TrackBack投稿者自身のIPアドレスが同一の場合のみ投稿を許す」

つまり、ブログツールなどからのトラックバックのみ許すという設定です。

これは今回のトラックバックスパムが全てプロクシ(若しくはそう推定されるIP)からのアクセスだったためで

という辺りで由来の判らないのを全部弾く方向じゃないと投稿内容からの把握は無理という判断の為です。
(手動トラックバックも今回の規制に対象になりますが、今のところもらった記憶無いのでまぁいいかと(^^;<時間があれば手動トラックバック用の入力フォーム作ります)

で、実際の修正点ですが以下のような感じです。

MovableType Version 2.661 日本語化済 lib/MT/App/Trackback.pm の170行目辺りに次のコードを挿入

    ## Check if TrackBack sender hostname and ip address are the same.
    {
     $url =~ /^s?https?:\/\/([a-zA-Z0-9.-]+)/;
     if($user_ip ne join(".", unpack("C*", ${[gethostbyname($1)]}[4]))){
      return $app->_response(Error =>
       $app->translate("TrackBack pings is NOT permitted if TrackBack URL and sender " .
                                      "host address are different."));
     }
    }
そんなに長くないコードですし、追加モジュールも不要なので使いやすいかと。

まぁ、みんな同じ対策をするとあっという間にそれを乗り越える方法をやられるだけだと思いますし、この手の対策は一種の趣味みたいなものなので、実装したい方のみ試してみてください(´▽`)/

Posted by Takuchan at 2005年02月15日 17:48 | トラックバック(0)