トラックバックスパム対策を考える
|パソコン関連情報|2008/11/05 15:03:51|当ブログにもようやく、トラックバック機能を搭載することが出来ましたが、ここでトラックバックスパム対策を考えてみます。
スパム対策で、個人的に一番怖いと思っていることは、とても意義のある送信内容を弾いてしまうことです。つまり、対策をしすぎてもダメ。そんなわけで、以下よりいろいろと対策などを考えていきますよ。
大規模サイトなどで利用されているブログツール(Movable TypeやNucleus)を使っていれば、既に対策されていたり、プラグインでサヨナラすることは出来ますけど、当サイトのように独自に制作したブログでは、それらのプラグインなんか入れることが出来ません。つまり、自分でプログラムを書いて対策するしかないです。
じゃぁどのような方法があるのか。…その前に、どのようなスパムがくるのか考えてみます。
まず1つめとして、快楽的な運営妨害が考えられます。このようなスパムは、存在しないエントリやランダムで生成された文字列で登録されます。これらは、「こちら側のエントリにアクセスしトラックバック先のURLを収集、トラックバック先URLにPingを行い、スパムを送りつける」という感じで行われるものが大半だと思います。
次に2つめとして、宣伝目的が考えられます。このようなスパムは、GoogleのPageRank欲しさや、ユーザーの確保などを目的としており、主に購読者が多いブログなどに見られます。正直このタイプが一番迷惑なんじゃないかな、と個人的には考えています。
1つめのタイプのトラックバックスパムには簡単に対処できるでしょう。ランダムで生成されるタイプの文字列は大抵、a-zA-Z0-9で構成されており、マルチバイト文字を含みません。これらには、正規表現を用いてサヨナラしてあげれば大丈夫でしょう。if(preg_match("/([a-zA-Z0-9;\/?:\@&=+\$,%#-_.!~*\']+)/",$_POST['title'])){PHPで書くならこんな感じですかね。これでこのタイプのスパムには7割~8割対応できるでしょう。
exit('不正なリクエストです。');
}
また、このタイプのスパムは大抵海外のサーバー、もしくはプロクシを刺して送られてくることが多いと思います。
この場合は、リクエストしてきたサイトのサーバーの所在国やなどを調べてあげたり、プロクシが吐くような環境変数があったらサヨナラしてあげるといいと思います。まぁ、国内からのポストであったり、プロクシ刺してなかったらまったく意味を成さないんですがね。
サーバーの所在国を探す
プロクシが吐く環境変数の例
・HTTP_VIA
・HTTP_X_LOCKING
・HTTP_XROXY_CONNECTION など。
2つめのタイプには、送信相手のエントリを確認して、こちら側のエントリのURLや、同様のキーワード(タグの不一致など)がなければサヨナラする方法ぐらいしか思いつきません。PHPで実装するなら、$_POST['excerpt']内容を確認したり、soketopenとかで相手の送ってきた$_POST['url']を開いて、記事内容と照合させたりする。
相手側のエントリがトラックバックを受け付けていなかったら、こちら側でもエントリを受け付けなくしてあげたりとかも出来ますね。一応、お互いにリンクを張り合うってのが、トラックバックの紳士協定ですから。
一番効力がありそうなのは、ホワイトリストとブラックリストを作ってあげて、照合するのがいいんじゃないでしょうか。
たとえば、「このドメインからのトラックバックは受け付けるが、このドメインからのトラックバックは受け付けない」や「このキーワードを含んでいるトラックバックは受け付けない」なんかは、parse_url()関数かstrcmp()関数使えば簡単にできそうですし。
この記事へのコメント
- この記事へのコメントはまだありません。
この記事へコメントをつける
この記事は、投稿されてから 50 日以上経過しているため、コメントを付けることは出来ません。64 日経過しています。
この記事へのトラックバック
関連するトラックバックはないようです。














