Movable Type スパム対策まとめ

Webサイトを運営する上で厄介な事といえば、コメントスパムトラックバックスパム

このサイトで現在使用しているツールはMovable Typeだけど、このツールは利用者が多いだけあってスパム対策も色々考えられていたりする。そんなわけで、このサイトで現在利用しているMovable Typeのスパム対策について。

コメントスパム対策

現状のMovable Typeのコメントスパムフィルタはそれなりに優秀なので、ある程度のスパムは弾いてくれる。ただ、普通のコメントでもリンクが多数含まれているとスパムと判定されてしまう、コメントスパムリストに多量のスパムコメントが蓄積される、スパム処理によってサーバのCPUリソースが費やされる、といった問題がある。

Movable Typeのバージョン4から標準採用された画像CAPTCHAを利用することで、コメントスパム を相当抑えることが可能(参考:コメントに CAPTCHA 認証を利用する | Movable Type 4 ドキュメント)。少なくとも本サイトでは、採用以降のコメントスパムは完全に途絶えた。まー、サイトの規模にもよりけりだと思うので、どのサイトでも完全にシャットダウンできるかどうかは分からない。
CAPTCHAにはMovable Type既定の物以外に、reCAPTCHAという別のプロバイダが提供するプラグインも存在する。作ろうと思えば音声や問題形式のCAPTCHAプラグインも可能と思うが、存在は確認できていない。

デメリットは以下の通り。

  • 現状では基本的には画像によるCAPTCHAとなるため、画像が読み取れない(表示しない)ユーザーに対しての配慮が無い。
  • ユーザーに対し、強制的に文字入力というワンアクションを強制する事になる。
  • CAPTCHAのテンプレートタグが柔軟性に欠け、出力されるHTMLがInvalidな物になる可能性や、柔軟性に乏しい構造を吐く可能性がある。っていうか既定のHTMLタグは何とかしてくれ。
  • CAPTCHA技術は既に対抗手段が現れており、完全ではない(ただしマイナーな個人サイトに対してそこまで執拗なスパムが無いと思われるので、対策としては有効)。

CAPTHAを使用する以外の対策としては以下のような物が考えられる。なお、デフォルトのテンプレートタグを変更して機械的な読み取りを阻害するのはほとんど効果が無い。

  • 環境変数のThrottleSecondsを変更する(緩和させる)。
  • 設定でスパム判定の基準を厳しくする。
  • 登録ユーザーのみコメントを受け付ける。
  • そもそもコメントを受け付けない。

トラックバックスパム対策

コメント同様、現状のMovable Typeのトラックバックスパムフィルタはそれなりに優秀なので、大体はスパムとして判定してくれる。しかし、トラックバックスパムリストに多量のスパムコメントが蓄積されることによって許容可能なトラックバック上限を簡単に突破してしまう、スパム処理によってサーバのCPUリソースが費やされる、といった問題がある。

スパム対策として、トラックバックSPAM防止プラグインを利用する。使ってないけど、Movable Type で言及リンクのない TrackBack ping を弾くプラグインでもいいと思う。要するに、トラックバック元にトラックバック先へのリンクが含まれていなければスパムと判断して弾く、というプラグインを導入する。本サイトでは導入以後、トラックバックスパムを完全にシャットダウンする事ができた。
デメリットは以下の通り。

  • 少なくともトラックバック元記事の本文にトラックバック先へのリンクが無いと受け付けないため、トラックバック用途を強制的に限定させてしまう。
  • 処理負荷が増加する。

プラグインを使用する以外の対策としては以下のような物が考えられる。

  • 環境変数のThrottleSecondsを変更する(緩和させる)。
  • テンプレートのMTEntryTrackbackDataタグを削除する。
  • 設定でスパム判定の基準を厳しくする。
  • そもそもトラックバックを受け付けない。

ちなみに、環境変数のOneHourMaxPingsOneDayMaxPingsを変更することで、一時間 or 一日で受け付けられるトラックバック量を制限できるが、これはスパムを受けても場合もカウントされるため、この上限をあっという間に突破してしまい、「HTTP error: 403 Throttled」というエラーを吐いて本来のトラックバックを受け付けられなくなる可能性がある。プラグイン導入後はそもそもスパムを受け付けなくなるので、無意味に上限を超えることは無くなる。

ちなみに「トラックバックSPAM防止プラグイン」を使用する場合、スパムを受け取った際にログにメッセージを吐き出すが、本サイトではこれが一日に数百件とか出てきて非常に鬱陶しかったので、ログを吐き出さないように以下の行の先頭に「#」を加えてコメントアウトする変更を加えている。ログなんてそもそも確認しないので、出力されてもあんまり意味は無いしね。

41 :     $app->log($app->translate($message) . qq/(U:$url,B:$blog_name,T:$title,E:$excerpt)./);

まとめ

そんなこんなで、Movable Typeのスパム対策のまとめを書き連ねてみた。
ネットが普及するに従ってスパムは日々増加し、その手段も徐々に巧妙になっているけど、完全とは言わないまでも対策案が色々考え出されていたりする。ここで紹介した物が将来に渡って有効かどうかは怪しいけど、とりあえず現状では有効な手段であると、本サイトの実績から述べる事ができる。


Posted by:

Posted At:

Modified At:

コメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください