Ringworld
RingBlog説明書

RingBlog説明書 - スパム対策


  1. スパムの内容をよく調べる
  2. 連続投稿の拒否
  3. 日本語以外の拒否
  4. プロキシ経由
  5. ブログ外からのコメント
  6. *.exe, *.scrへのURL
  7. 記事中のURL
  8. IPアドレス
  9. 語句による拒否
  10. User Agent
  11. その他の拒否条件
  12. トラックバック
  13. 拒否したコメント(トラックバック)の保存
  14. スパムログの集計 (spamlog.cgi)
  15. 公開メンバー登録
  16. .htaccess での IP 拒否


説明書の他の部分と重複する内容もありますが、RingBlogでのコメントやトラックバックのスパム対策についてまとめておきます。
いずれも完全ではなくスパムではないものも拒否してしまう可能性があるので、設定のしかたには注意してください。

スパムの内容をよく調べる

スパムとは「コメントやトラックバックの迷惑な書き込み」をいいます。メンバーが書き込む記事については、 メンバーを信頼することとしてスパム対策機能はありません。
スパムが書き込まれたら、その内容や特徴をよく調べてください。それによって、対策を考えることができます。
ページトップへ

連続投稿の拒否

指定分数以内の連続投稿を拒否することができます。どの記事へのコメント(またはトラックバック)であるかを問わず、 同一IPからの投稿が対象になります。
広告スパムではIPをつぎつぎと変えて送ってきたり、ある程度の間隔を開けてくるので、あまり効果はないかもしれません。 しかし、個人からのいやがらせ投稿では効果がある可能性はあります。
ページトップへ

受付件数の制限

コメント、トラックバックともに受け付ける件数を制限することができます。スパムが多く、拒否条件をうまく設定できない場合などは 件数制限をしておくといいでしょう。
ページトップへ

日本語以外の拒否

私のブログや掲示板では圧倒的に英文(マルチバイトコードを含まない文章)のスパムです。英文を拒否してもいいのなら、 「英数記号だけのコメントを拒否する」にチェックを入れてください。これは非常に効果があります。
英文ではなく、日本語以外のマルチバイトコードを含むものもあります。これらは表示しても文字化けのようになるだけなので、 無条件に拒否するようになっています。
トラックバックは送信元によって使っているコードが違う(原則はUTF-8で送信)なので、 Shift_JISに変換してから日本語かどうかをチェックします。
コメントはShift_JIS以外で書き込まれること自体が不自然なので、Shift_JISへの変換はせずにチェックします。
ページトップへ

プロキシ経由

コメント、トラックバックともにプロキシ経由のコメントを拒否することができます。
プロキシかどうかは以下の環境変数があるかどうかで判断します。
ホスト名に proxy または cache が含まれているものもプロキシであると判断します。

匿名プロキシといってプロキシであるということを隠すものもあり、それらは判別できません。
企業、官公庁、大学ほかでプロキシは広く使われています。 インターネット接続プロバイダーでもトラフィックの緩和のために自社のプロキシを使うことを勧めているところもあるし、 個人で自宅のマシンをホームネットワークのプロキシにすることもできます。 この設定をオンにすると、それらもすべて区別なく拒否することになります。
プロキシを拒否するかどうかにかかわらずスパムと判断されると、スパムログにはプロキシ関係の環境変数も記録します。 これらに IP があった場合には、こちらがほんとうのIPであり、送信元IPはプロキシであると考えられます。

ページトップへ

ブログ外からのコメント

ブログのコメント欄に文章を入力するのではなく、コメント用のスクリプトやプログラムでコメントをブログに送ることが可能です。 (RingBlogに限らず、公開しているものはほとんど可能です)
この対策として、HTTP_REFERERを参照してこのブログを経由したコメントかどうか(つまりコメント欄に記入したのかどうか)を判断し、 そうでないコメントを拒否します。
これも回避方法はあるので完全ではないし、ファイアウォールなどでHTTP_REFERERを送らない設定になっていると 拒否されてしまいます。
スパムはブログ外から送信してきても HTTP_REFERER にはほんとらしい値が設定されていることが多いようなので、 この項目はあまり効果がないでしょう。
※ トラックバックは通常はまったく別のシステムから送信されるので、このことは適用されません。
ページトップへ

*.exe, *.scrへのURL

記事中やコメント投稿者のURL、トラックバックの送信元URLなどに *.exe, *.src へのリンクやURLが記載されていることがあります。 これらはウィルスやワームなど有害なツールであり、ダウンロードして実行すると危険がある可能性が高いものです。
特に理由がない限り、この項目にはチェックを入れてください。
ページトップへ

記事中のURL

スパムコメントでは、記事中に多くのURLが記載されていることがめずらしくありません。 このため、6件以上のURLが記載されている場合には拒否する設定があります。
通常はこれにチェックを入れておくといいでしょう。
拒否件数は config.cgi の comment_url_bunch_val, trackback_url_bunch_val の数値で変更可能です。
ページトップへ

IPアドレス

コメント、トラックバックそれぞれに、発信元IPで拒否する設定があります。 IPは単独でも範囲指定でもかまいません。どこかの企業、学校、プロバイダをまるごと拒否したい場合には、 範囲指定が必要になることが多いでしょう。 範囲指定は 192.168.1.0-192.168.159.255 のようにハイフンでつないで記入してください。
ただし、IPアドレスで拒否すると、当然のことながらスパムでなくても拒否されることに注意してください。
ページトップへ

語句による拒否

「下記の語句を含むコメント(トラックバック)を拒否する」に登録した語句が、 コメントやトラックバックの名前、発信元URL、メールアドレス、本文などにあると拒否します。 (正規表現は不可)
広告目的のスパムなら、商品名や関連語句を登録してください。 誘導しようとしている URL を登録することも対策になります。

たとえば

adipex
ambien
butalbital
cialis
fioricet
hydrocodone
levitra
phentermine
propecia
tramado
ultram
viagra
vicodin
xanax
のようにです。フルネームではなく、特定できる長さがあれば充分です。

URLについても同様で、

http://abc.xyz.com/a123.html
http://abc.xyz.com/b456.html
のようにあるサーバーのすべてのページを拒否するなら http://abc.xyz.com/ と記入してください。

つぎのような URL の場合は .xyz.com/ と記入すれば、どちらも拒否されます。

http://abc.xyz.com/a123.html
http://klm.xyz.com/b456.html

[url=http://www.....]Article...[/url]
[link=http://www.....]Article...[/link]
このパターンもスパムによく出てきます。これらは [url= と [link= を登録することで拒否できます。

スパムでは http:%2F%2F のように一部をURLエンコード形式で表示したり、http:// のように一部を数値参照にしたものもありますが、 RingBlogではどちらも http:// と通常の文字に変換してから拒否語句の照合をします。
英数記号だけのコメントやトラックバックを拒否する場合には、拒否語句の照合より英文拒否が優先するので英文対象の拒否語句設定は 無用です。
照合時には、大文字/小文字の区別はしません。
ページトップへ

User Agent

トラックバックについては、トラックバックを送信してきたプログラム名(User Agent)によって、拒否することができます。
Trackback/1.02 というのが多く使われているようですが、これを指定するなら Trackback とだけ記入しておけば、バージョン番号が 変わっても対応できます。
照合時には、大文字/小文字の区別はしません。
ページトップへ

その他の拒否条件

これ以外に、下記のコメントは設定にかかわらず拒否します。(トラックバックも同様)
ページトップへ

拒否したコメント(トラックバック)の保存

保存にチェックを入れれば、スパムログに保存されます。無制限に保存されるので、適宜ファイルごと削除してください。
ただし、以下のものはスパムログには保存されません。
ページトップへ

スパムログの集計 (spamlog.cgi)

RingBlog v3.05 以降に対応するスパムログを集計するスクリプト spamlog.cgi を作成しました。 ダウンロードのページに置いてあります。
ログ形式も変更しているので、これより前のバージョンで記録されたスパムログには対応しません。
blog.cgi と同じディレクトリに置いてブラウザから呼び出し、トップ画面でそのブログの管理権限を持つメンバーのID、パスワードを 入力してください。
スパムを防ぐツールではありませんが、どのようにブロックしたかがわかりやすくなります。
ファイルをダウンロードせずにブラウザで表示した場合、日本語が文字化けすることがあります。 その場合にはブラウザで文字コード設定(エンコードまたは文字エンコーディング)を Shift_JIS にしてください。
スパムログ集計結果 (表示例)
コメントスパム
開始日時 2006/11/30 03:52
最終日時 2006/12/04 18:39
スパム件数 112 ログダウンロード
発信元IP件数 105 リストダウンロード
記入者URL件数 77 リストダウンロード
記事内URL件数 717 リストダウンロード
記事内ホスト件数 516 リストダウンロード
コメントスパムログファイル削除

トラックバックスパム
開始日時 2006/12/03 08:34
最終日時 2006/12/03 10:44
スパム件数 86 ログダウンロード
発信元IP件数 51 リストダウンロード
発信元URL件数 69 リストダウンロード
記事内URL件数    
記事内ホスト件数    
トラックバックスパムログファイル削除
※ ダウンロードリンクと削除ボタンはダミーです。

公開メンバー登録

メンバー登録を公開していると異常に多くの登録があり支障をきたすことがあるようです。 このため、下記のようなコメントのスパム対策と似た対策をとっています。
いくつかの項目はコメントで対策をとる設定になっているもののみが有効となります。 公開メンバー登録だけへのスパム対策設定はありません。また、公開メンバー登録のスパムは保存されません。
  • ID、メールアドレス、実名などに不正な文字があったり長すぎる場合
  • IPアドレスによる拒否
    ※ コメントの設定にしたがいます。(拒否IPはコメントと共用)
  • 入力フォームの表示時刻と送信時刻が 1時間以上開いている場合
    ※ 間隔設定はコメントの設定にしたがいます。
    管理画面からの登録は制限されない。
  • 入力フォームの表示時刻が空の場合
  • 入力フォームを表示したIPと送信したIPが異なる場合
  • 同一IPからの連続登録
    config.cgi の free_regist_ip_interval_val に制限する分数を設定する。0 か無設定なら制限なしとする。(ブログ管理での設定はできない)
    管理画面からの登録は制限されない。
  • 24時間以内の公開登録数制限
    config.cgi の free_regist_24_val に制限する件数を設定する。0 か無設定なら制限なしとする。(ブログ管理での設定はできない)
    管理画面からの登録は制限されない。

.htaccess での IP 拒否

サーバーによっては .htaccess という管理ファイルを使うことができます。(RingBlog の機能ではなく、 サーバーの機能です)
特定の IP から発信されるスパムが多いなら、.htaccess にその IP を拒否するように設定しておけば blog.cgi が起動する前にサーバーがブロックしてくれます。RingBlog が起動してからコメントのスパム対策で拒否するよりも強力です。
ただし、設定を誤るとその影響範囲のページや CGI すべてがアクセス不可となってしまいます。 使う場合には記述方法やそのサーバーでどういう設定が認められているかを よく調べてください。不完全な理解で使うのは危険ですから、やめてください。