説明書の他の部分と重複する内容もありますが、RingBlogでのコメントやトラックバックのスパム対策についてまとめておきます。
いずれも完全ではなくスパムではないものも拒否してしまう可能性があるので、設定のしかたには注意してください。
スパムの内容をよく調べる
スパムとは「コメントやトラックバックの迷惑な書き込み」をいいます。メンバーが書き込む記事については、
メンバーを信頼することとしてスパム対策機能はありません。
スパムが書き込まれたら、その内容や特徴をよく調べてください。それによって、対策を考えることができます。
スパムが書き込まれたら、その内容や特徴をよく調べてください。それによって、対策を考えることができます。
連続投稿の拒否
指定分数以内の連続投稿を拒否することができます。どの記事へのコメント(またはトラックバック)であるかを問わず、
同一IPからの投稿が対象になります。
広告スパムではIPをつぎつぎと変えて送ってきたり、ある程度の間隔を開けてくるので、あまり効果はないかもしれません。 しかし、個人からのいやがらせ投稿では効果がある可能性はあります。
広告スパムではIPをつぎつぎと変えて送ってきたり、ある程度の間隔を開けてくるので、あまり効果はないかもしれません。 しかし、個人からのいやがらせ投稿では効果がある可能性はあります。
受付件数の制限
コメント、トラックバックともに受け付ける件数を制限することができます。スパムが多く、拒否条件をうまく設定できない場合などは
件数制限をしておくといいでしょう。
日本語以外の拒否
私のブログや掲示板では圧倒的に英文(マルチバイトコードを含まない文章)のスパムです。英文を拒否してもいいのなら、
「英数記号だけのコメントを拒否する」にチェックを入れてください。これは非常に効果があります。
英文ではなく、日本語以外のマルチバイトコードを含むものもあります。これらは表示しても文字化けのようになるだけなので、 無条件に拒否するようになっています。
トラックバックは送信元によって使っているコードが違う(原則はUTF-8で送信)なので、 Shift_JISに変換してから日本語かどうかをチェックします。
コメントはShift_JIS以外で書き込まれること自体が不自然なので、Shift_JISへの変換はせずにチェックします。
英文ではなく、日本語以外のマルチバイトコードを含むものもあります。これらは表示しても文字化けのようになるだけなので、 無条件に拒否するようになっています。
トラックバックは送信元によって使っているコードが違う(原則はUTF-8で送信)なので、 Shift_JISに変換してから日本語かどうかをチェックします。
コメントはShift_JIS以外で書き込まれること自体が不自然なので、Shift_JISへの変換はせずにチェックします。
プロキシ経由
コメント、トラックバックともにプロキシ経由のコメントを拒否することができます。
プロキシかどうかは以下の環境変数があるかどうかで判断します。
プロキシかどうかは以下の環境変数があるかどうかで判断します。
- HTTP_PROXY_CONNECTION
- HTTP_XROXY_CONNECTION
- HTTP_CACHE_CONTROL
- HTTP_X_FORWARDED_FOR
- HTTP_FORWARDED
- HTTP_VIA
- HTTP_CLIENT_IP
- HTTP_FROM
匿名プロキシといってプロキシであるということを隠すものもあり、それらは判別できません。
企業、官公庁、大学ほかでプロキシは広く使われています。
インターネット接続プロバイダーでもトラフィックの緩和のために自社のプロキシを使うことを勧めているところもあるし、
個人で自宅のマシンをホームネットワークのプロキシにすることもできます。
この設定をオンにすると、それらもすべて区別なく拒否することになります。
プロキシを拒否するかどうかにかかわらずスパムと判断されると、スパムログにはプロキシ関係の環境変数も記録します。
これらに IP があった場合には、こちらがほんとうのIPであり、送信元IPはプロキシであると考えられます。
ブログ外からのコメント
ブログのコメント欄に文章を入力するのではなく、コメント用のスクリプトやプログラムでコメントをブログに送ることが可能です。
(RingBlogに限らず、公開しているものはほとんど可能です)
この対策として、HTTP_REFERERを参照してこのブログを経由したコメントかどうか(つまりコメント欄に記入したのかどうか)を判断し、 そうでないコメントを拒否します。
これも回避方法はあるので完全ではないし、ファイアウォールなどでHTTP_REFERERを送らない設定になっていると 拒否されてしまいます。
スパムはブログ外から送信してきても HTTP_REFERER にはほんとらしい値が設定されていることが多いようなので、 この項目はあまり効果がないでしょう。
※ トラックバックは通常はまったく別のシステムから送信されるので、このことは適用されません。
この対策として、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 の数値で変更可能です。
通常はこれにチェックを入れておくといいでしょう。
拒否件数は config.cgi の comment_url_bunch_val, trackback_url_bunch_val の数値で変更可能です。
IPアドレス
コメント、トラックバックそれぞれに、発信元IPで拒否する設定があります。
IPは単独でも範囲指定でもかまいません。どこかの企業、学校、プロバイダをまるごと拒否したい場合には、
範囲指定が必要になることが多いでしょう。
範囲指定は 192.168.1.0-192.168.159.255 のようにハイフンでつないで記入してください。
ただし、IPアドレスで拒否すると、当然のことながらスパムでなくても拒否されることに注意してください。
ただし、IPアドレスで拒否すると、当然のことながらスパムでなくても拒否されることに注意してください。
語句による拒否
「下記の語句を含むコメント(トラックバック)を拒否する」に登録した語句が、
コメントやトラックバックの名前、発信元URL、メールアドレス、本文などにあると拒否します。
(正規表現は不可)
広告目的のスパムなら、商品名や関連語句を登録してください。 誘導しようとしている URL を登録することも対策になります。
英数記号だけのコメントやトラックバックを拒否する場合には、拒否語句の照合より英文拒否が優先するので英文対象の拒否語句設定は 無用です。
照合時には、大文字/小文字の区別はしません。
広告目的のスパムなら、商品名や関連語句を登録してください。 誘導しようとしている URL を登録することも対策になります。
たとえば
adipex
ambien
butalbital
cialis
fioricet
hydrocodone
levitra
phentermine
propecia
tramado
ultram
viagra
vicodin
xanax
のようにです。フルネームではなく、特定できる長さがあれば充分です。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/ と記入してください。http://abc.xyz.com/b456.html
つぎのような URL の場合は .xyz.com/ と記入すれば、どちらも拒否されます。
http://abc.xyz.com/a123.html
http://klm.xyz.com/b456.html
http://klm.xyz.com/b456.html
[url=http://www.....]Article...[/url]
[link=http://www.....]Article...[/link]
このパターンもスパムによく出てきます。これらは [url= と [link= を登録することで拒否できます。
英数記号だけのコメントやトラックバックを拒否する場合には、拒否語句の照合より英文拒否が優先するので英文対象の拒否語句設定は 無用です。
照合時には、大文字/小文字の区別はしません。
User Agent
トラックバックについては、トラックバックを送信してきたプログラム名(User Agent)によって、拒否することができます。
Trackback/1.02 というのが多く使われているようですが、これを指定するなら Trackback とだけ記入しておけば、バージョン番号が 変わっても対応できます。
照合時には、大文字/小文字の区別はしません。
Trackback/1.02 というのが多く使われているようですが、これを指定するなら Trackback とだけ記入しておけば、バージョン番号が 変わっても対応できます。
照合時には、大文字/小文字の区別はしません。
その他の拒否条件
これ以外に、下記のコメントは設定にかかわらず拒否します。(トラックバックも同様)
- 名前が50バイト以上
- URLが100バイト以上
- URLが http:// で始まっていない
- メールアドレスが50バイト以上
- メールアドレスに http:// が含まれている
- 名前、メールアドレス、URLに改行が含まれている
- 記事にタブ、改行以外のコントロールコードが含まれている(スパムログ保存時には除去)
- Shift_JIS ではないマルチバイトコード (EUC, Unicode は日本語であっても拒否)
ただし、完全には判別できずShift_JISであると誤認識することがある - コメントの場合、コメント入力フォームの表示時刻と送信時刻が 1時間以上開いている場合
ブログからのコメントではなく、入力フォームをローカルに保存しておき送信したものの可能性があります。
※ 間隔設定は config.cgi の comment_form_timestamp_val の数値(1時間単位)で変更可能です。
- コメントの場合、コメント入力フォームの表示時刻が空の場合
ブログからのコメントではなく、入力フォームをローカルに保存しておき送信したものと考えられます。 - コメントの場合、コメント入力フォームを表示したIPと送信したIPが異なる場合
通常は一致するはずです。異なるのは閲覧(コメント入力フォーム表示)は通常のホストから、 送信はプロキシ経由にして送信元を隠そうとしていると考えられます。
拒否したコメント(トラックバック)の保存
保存にチェックを入れれば、スパムログに保存されます。無制限に保存されるので、適宜ファイルごと削除してください。
ただし、以下のものはスパムログには保存されません。
ただし、以下のものはスパムログには保存されません。
- コメントとトラックバックで制限件数を越えている
- コメント先、トラックバック先の記事が存在しない
- コメントやトラックバックが受付不可に設定されている
- トラックバックの送信元URL、送信元記事題名がない
- コメントやトラックバックの本文がない
スパムログの集計 (spamlog.cgi)
RingBlog v3.05 以降に対応するスパムログを集計するスクリプト spamlog.cgi を作成しました。
ダウンロードのページに置いてあります。
ログ形式も変更しているので、これより前のバージョンで記録されたスパムログには対応しません。
blog.cgi と同じディレクトリに置いてブラウザから呼び出し、トップ画面でそのブログの管理権限を持つメンバーのID、パスワードを 入力してください。
スパムを防ぐツールではありませんが、どのようにブロックしたかがわかりやすくなります。
ファイルをダウンロードせずにブラウザで表示した場合、日本語が文字化けすることがあります。 その場合にはブラウザで文字コード設定(エンコードまたは文字エンコーディング)を Shift_JIS にしてください。
※ ダウンロードリンクと削除ボタンはダミーです。
ログ形式も変更しているので、これより前のバージョンで記録されたスパムログには対応しません。
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 すべてがアクセス不可となってしまいます。 使う場合には記述方法やそのサーバーでどういう設定が認められているかを よく調べてください。不完全な理解で使うのは危険ですから、やめてください。
特定の IP から発信されるスパムが多いなら、.htaccess にその IP を拒否するように設定しておけば blog.cgi が起動する前にサーバーがブロックしてくれます。RingBlog が起動してからコメントのスパム対策で拒否するよりも強力です。
ただし、設定を誤るとその影響範囲のページや CGI すべてがアクセス不可となってしまいます。 使う場合には記述方法やそのサーバーでどういう設定が認められているかを よく調べてください。不完全な理解で使うのは危険ですから、やめてください。