BlognPlus 用コメントスパム対策モジュール

コメントスパムをフィルタリングする為の BlognPlus 用モジュールです。

現在の最新バージョンは「Ver3.30」です。

主な機能

コメントスパム対策

荒らし対策

その他

動作環境

ダウンロード

利用規約

  1. このモジュールの所有権は 「nJOY」管理人 CJ にあります。
  2. モジュールを使用して損害が生じても、「nJOY」管理人 CJ は一切の責任を負いかねます。
  3. モジュールの再配布・販売等は一切禁じます。
  4. 利用者個人の責任において改造は自由に行えます。
  5. スクリプト内にあるプログラム名・バージョン名・著作権表示を削除・変更する事は認めません。
  6. 当規約に同意された方のみ、このモジュールを無料で使う事が出来ます。
  7. もしよければ、あなたのブログに「nJOY BLOG」へのリンクをはってやってください。管理人が大変喜び、モジュール作成の励みになります。

コメントスパム対策モジュール」(asm4cmt.zip, 27kb)


インストール方法(主な手順)

  1. ダウンロードした圧縮ファイル(asm4cmt.zip)を解凍する
  2. 「asm4cmt」フォルダを BlognPlus ディレクトリ下の「module」にアップロード
  3. 「caps.cgi」「config.cgi」「key.cgi」「ngwd.cgi」「rejected.cgi」のパーミッションを変更する(666 等)
  4. スキンの投稿フォーム内に独自タグを追加
  5. モジュール管理から設定を変更
  6. モジュール管理画面で動作スイッチを「ON」にする(BlognPlus v2.6.0 以上)

モジュール構成ファイル

赤文字のファイルのパーミッションは「666」「606」等にする必要があります。

インストール方法(BlognPlus v2.6.x 以降)

インストール

「asm4cmt」フォルダを /module/ ディレクトリ下にアップロード後、未登録一覧に入っている「コメントスパム対策モジュール」の [インストール] ボタンを押してください。

動作設定

BlognPlus v2.6.x ではモジュールをインストール後、動作させるために動作スイッチを ON にする必要があります。

「コメントスパム対策モジュール」は「PC」と「携帯」両方とも ON にして利用してください。
OFF で利用すると、スパムに対して無防備の BlognPlus のコメント投稿処理が使われます。

優先順位

インストール方法(詳細)

スキンの修正

「コメントスパム対策モジュール」ver2.00 からはコメント投稿フォームに1行書き加える必要があります。
下記を参考に、PC用と携帯用スキン両方に赤文字部分を追加してください。
この記述がない場合、投稿エラーになりコメントが機能しなくなりますので気をつけて下さい。

また ver3.00 からトークン処理が必須となりました。まだトークン処理の記述を加えていない場合は青文字部分も追加してください。

PC用スキン

  1. <form action="index.php?mode=comment" method="post">
  2. <input type="hidden" value="{CEID}" name="blogn_cid">
  3. <input type="hidden" value="{ASMCT}" name="{ASMCN}">
  4. <input type="hidden" value="{TOKEN}" name="blogn_token">
  5. <label for="c_name">name:</label><br>
  6. <input id="c_name" tabindex="1" name="blogn_cname" value="{CNAME}"><br>
  7. <label for="c_email">email:</label><br>
  8. <input id="c_email" tabindex="2" name="blogn_cemail" value="{CEMAIL}"><br>
  9. <label for="c_url">URL:</label><br>
  10. <input id="c_url" tabindex="3" name="blogn_curl" value="{CURL}"><br>
  11. <label for="c_mes">comments:</label><br>
  12. <textarea id="c_mes" tabindex="4" name="blogn_cmes" rows="10" cols="40" style="width: 400px"></textarea><br>
  13. <input type="submit" value="コメント送信">
  14. <input id="set_cookie" type="checkbox" value="on" name="set_cookie">
  15. <label for="set_cookie">Cookieに登録</label>
  16. </form>

携帯用スキン(iskn.html)

  1. コメント投稿<br>
  2. <form action="index.php" method="post">
  3. <input type="hidden" value="comment" name="mode">
  4. <input type="hidden" value="{CEID}" name="blogn_cid">
  5. <input type="hidden" value="{ASMCT}" name="{ASMCN}">
  6. <input type="hidden" value="{TOKEN}" name="blogn_token">
  7. <label for="c_name">name:</label><br>
  8. <input type="text" id="c_name" tabindex="1" size="8" name="blogn_cname" value="{CNAME}"><br>
  9. <label for="c_email">email:</label><br>
  10. <input type="text" id="c_email" tabindex="2" size="8" name="blogn_cemail" value="{CEMAIL}"><br>
  11. <label for="c_url">URL:</label><br>
  12. <input type="text" id="c_url" tabindex="3" size="8" name="blogn_curl" value="{CURL}"><br>
  13. <label for="c_mes">comments:</label><br>
  14. <textarea id="c_mes" tabindex="4" name="blogn_cmes" rows="2" cols="20"></textarea><br>
  15. <br>
  16. <input type="submit" value="コメント送信">
  17. <input id="set_cookie" type="checkbox" value="on" name="set_cookie">
  18. <label for="set_cookie">Cookieに登録</label>
  19. </form>

モジュールの仕組み

このモジュールでは受信したコメントを複数の条件に照らし合わせます。各条件にはペナルティ付けがされており、その合計ペナルティが基準値(1.0)以上ならスパムと判定します。

※ スパマーに手の内を明かしてしまうと対策される恐れがあるので、このページでは「条件」については多くは語りません。

スパム判定方法(簡単な説明)

複数ある条件それぞれに「0〜1」のペナルティが付与されています。
例えば、「条件A=1.0」「条件B=0.8」「条件C=0.5」「条件D=0.2」「条件E=0.1」と設定したとします。

受信したコメントに対して「条件A〜E」までチェックします。
もし条件に合致していると指定されたペナルティが加算されます。

例1:

「コメント1」は「条件A」でひっかかったとします。すると与えられるペナルティは「1.0+0+0+0+0」で「1.0」となります。
スパム判定基準値(1.0)に達しているので、「コメント1」はスパムと判定され受信を拒否します。

例2:

「コメント2」は「条件B」と「条件C」でひっかかったとします。与えられるペナルティは「0+0.8+0.5+0+0」で「1.3」となります。
これも基準値を上回ったのでスパムと判定されます。

例3:

「コメント3」は「条件C」「条件D」「条件E」と3つにひっかかったとします。与えられるペナルティは「0+0+0.5+0.2+0.1」で「0.8」になります。基準値を下回っているのでスパムとは判定されず、コメントの受信を許可します。

管理画面(設定)

モード選択

このモジュールには5種類の動作モードがあります。


スパム判定コメントの扱いログへの記録
ハムスパムハムスパム
テストモード行う受信受信するする
オール(A)モード行う受信保留するする
ブロック(B)モード行う受信保留しないする
チェック(C)モード行わないすべて保留する
デリート(D)モード行う受信削除しないしない
エキスパート(E)モード行う選択選択選択選択

(ハム=スパムではない普通のコメントの事)

使い方としては、まず「テストモード」で試験運用をすると良いでしょう。「テストモード」時はスパムであると判定された・されていないに関わらずすべてのコメントの受信を許可します。

もし問題がなければ「Aモード」または「Bモード」を使い始めてください。この2つのモードの違いは、ログへの記録内容です。「Bモード」ではスパムとしてブロックされたコメントのみ記録されますが、「Aモード」ではそれに加え受信を許可したコメントも記録されます。
コメントスパムなのに、スパム判定を免れた理由を調べたい時などに「Aモード」は力を発揮すると思います。

「Cモード」では不正投稿など必要最低限のスパム判定しか行わず、基本的に全てのコメントを保留状態にします。
全てのコメントは管理人が承認するまで公開されません。

「Dモード」ではスパム判定は行いますが、ログへは記録しません。ペナルティ値に絶対の自信のある上級者向けの設定です。

「Eモード」ではハム/スパムの扱いをユーザーの好きなようにカスタマイズできます。

ペナルティ

各条件のペナルティ値はモジュールの管理画面からいつでも変更が可能です。
もし誤認識が多い場合はペナルティの設定を見直しましょう。

最初は「テストモード」「Aモード」で運用し、受信したコメントに与えられたペナルティを研究すると良いでしょう。

投稿者名文字数制限

コメントの「name」欄に大量の文字列を記入されるとブログの表示が崩れるので、そのようなイタズラ予防策です。
特に大量の半角英数字を書き込まれると、文字列が折り返されず、最近のコメント欄がすごい事になります(下図参照)
20文字程度に設定する事を推奨します。

トリップ機能

名前の後に「#任意の文字列」を入力する事で「◆ランダムな文字列」に変換されます。

例:

「太郎#blognplus」と名前欄に記入すると「太郎◆CkgBtDYgdc」に変換されます。
「太郎◆CkgBtDYgdc」と名前欄に記入した場合は「太郎◇CkgBtDYgdc」になり、本物と偽者の区別もつきます。

BlognPlus には IP アドレスから投稿者IDを生成する機能がありますが、それだけでは物足りないという場合にどうぞ。

キャップ機能

メール欄に「#キャップパスワード」を入力する事で、名前があらかじめ設定されている「キャップ名★」に変換されます。
トリップ機能同様、なりすまし対策として有効です。

トリップ機能と違い、キャップパスワードとキャップ名は管理者によって事前に発行されている必要があります。

モジュールの設定画面で「キャップ機能」を ON にすると、「キャップ発行」ができるようになります。
テキストエリア内に「キャップパスワード=キャップ名」の形式で1行に1つずつ設定していってください。

例:

キャップ発行 記述形式:キャップパスワード=キャップ名

上記の例ではメール欄に と入力してコメントを投稿すると、名前が「管理人★」に自動的に変換されます。
またメール欄に と入力してコメントを投稿すると、名前が「administrator★」に自動的に変換されます。
キャップなりすまし防止のため名前欄に入力された「★」は「☆」に変換されます。

どちらの場合もコメントを投稿する際に入力された名前は無視されます。またキャップ機能が優先されるため、トリップも付加されません。
名前はキャップ名で上書きされますが、必ず名前欄に必ず何か文字列を入力して投稿してください。コメントする際の名前は必須項目なので、空欄の場合は投稿エラーになります。

以下の文字は「キャップパスワード」と「キャップ名」には使用できません。

パスキー

設定を変更する時に、「設定変更と一緒にパスキーも再生成する」のチェックボタンにチェックを入れることで、スパム対策用のパスキーが変更されます。

通常は再生成する必要はありませんが、インストール直後は必ずパスキーを再生成してください。
(再生成しなくても12時間毎に自動的に再生成します)

一時的にスパムが大量に投稿される時は、パスキーを再生成する事でスパムを軽減することができる可能性があります。

使い方(拡張機能)

メール通知機能

BlognPlus のメール通知機能を利用するとコメント受信時に指定のメールアドレスに通知されます。
このモジュールの「メール本文にコメントを含める」をオンにすると、メールでコメントを読む事が出来るようになります。

URL オートリンク

コメント欄に書かれた URL に自動的にリンクをはります。ウィンドウの開き方も指定できます。

引用強調機能

行頭に「>」(全角)または「>」(半角)が書かれていた場合、引用とみなされます。
その行は <span class="cmtquote">〜</span> で囲まれます。

スキンの CSS ファイルに下記のような記述を追加する事で、引用文の見た目を変えることが出来ます。

  1. .cmtquote {
  2. color:#ff0000;
  3. font-weight: bold;
  4. }

管理画面(ログ)

ログ

モジュールで受信したコメントのログを表示します(記録される内容はモードにより異なります)。
「ペナルティ」欄の色はペナルティの値により以下の通りに変化します。

配色ペナルティ判定
0.0ハム
0.1 〜 0.9
1.0 以上スパム

ペナルティが与えられた理由は「ペナルティ」欄の左にあるセレクトボックスで確認できます。
理由が複数ある場合は、プルダウンメニューがアクティブになり、開いて全ての理由を確認できます。

もしスパムと誤認識されたものがあれば、ログから得られる情報を元にペナルティ付けを設定しなおしてください。

UA(User Agent, ユーザーエージェント)
コメント投稿に利用されたブラウザ・携帯端末情報など
IP(IP アドレス)
コメント投稿者のネットワークアドレス
Ref(Referer, 参照元)
この欄には通常ブログ記事のアドレスが入ります。

保留解除

保留されたコメントは1件ずつ再登録する事が出来ます。

保留中コメントの左側にはラジオボタンが表示されます(上図の赤矢印)。
保留状態を解除したいコメントのラジオボタンにチェックをいれ、[保留解除] ボタンを押してください。

ログ削除

[ログ一括削除] ボタン横のチェックボックスにチェックを入れボタンを押す事で、ログをすべて削除できます。
※ ログを削除しても、ブログで受信したコメントは削除されません。

ログをためすぎると、管理画面を表示するのに時間がかかるようになるため、適当にログをクリアしてください。

保留コメントカウンター機能

スキンに {ASMCT_COUNT} と記述すると、ログに記録されているコメントの件数(※)をブログ上に表示出来ます。

最新コメント一覧に赤文字部分を追加しておくと、現在の保留状況が分かります。
いちいち、モジュールの管理画面に入らなくてもいいので便利です。

  1. {RC}
  2. <h2 class="linktitle">最新コメント</h2>
  3. <div class="linktext">
  4. <ul class="sidebar">
  5. {RCLOOP1}
  6. <li>{RCTITLE}
  7. <ul class="sidebar">
  8. {RCLOOP2}
  9. <li>{RCLINK}{RCNAME}({RCYMD}m/d{/RCYMD}){/RCLINK}</li>
  10. {/RCLOOP2}
  11. </ul>
  12. </li>
  13. {/RCLOOP1}
  14. </ul>
  15. <hr>
  16. 保留中コメント:{ASMCT_COUNT}件
  17. </div>
  18. {/RC}

もちろん表示箇所はどこでも構いませんので、上記の通りにしなくても OK です。

※ 純粋にログ件数を表示します。
「Bモード」と「Cモード」の場合、「ログ件数=保留件数」になります。
「Aモード」の場合、「ログ件数=(保留+すでに受信したコメント)の総数」になります。

最新コメント一覧からトリップ文字列を取り除く方法

右図のように「最新コメント一覧」からトリップ文字列を取り除き、すっきりさせるには「index.php」等を改造する必要があります。


BlognPlus v2.5.6 の場合

「index.php」540行目付近、下記の通りに赤い文字列を追加してください。

  1. $tmpbuf = $buf2;
  2. $name = get_magic_quotes_gpc() ? stripslashes($cmtval["name"]) : $cmtval["name"]; //¥を削除
  3. $name = antispam_remove_trip($name); // 投稿者名からトリップを削除
  4. $tmpbuf = preg_replace("/\{RCNAME\}/", blogn_html_tag_convert($name), $tmpbuf);
  5. $RClink = '<a href="index.php?e='.$cmtval["entry_id"].'#cmt'.$cmtval["id"].'">';

BlognPlus v2.6.x の場合

「新着コメントモジュール」の「/module/recomment/i_function.php」2ヶ所に赤い文字列を追加してください。

  1. $tmpbuf2 = str_replace ("{RCLOOP2}", "", $tmpbuf2);
  2. $tmpbuf2 = str_replace ("{/RCLOOP2}", "", $tmpbuf2);
  3. if (function_exists(blogn_mod_asm4cmt_remove_trip)) $cmtval["name"] = blogn_mod_asm4cmt_remove_trip($cmtval["name"]);
  4. $tmpbuf2 = preg_replace("/\{RCNAME\}/", $cmtval["name"], $tmpbuf2);
  5. $tmpbuf2 = preg_replace ("/\{RCLINK\}/", $cmtval["link"], $tmpbuf2);
  6. $tmpbuf2 = preg_replace ("/\{\/RCLINK\}/", $cmtval["linke"], $tmpbuf2);
  1. $tmpbuf2 = str_replace ("{RCLOOP2}", "", $tmpbuf2);
  2. $tmpbuf2 = str_replace ("{/RCLOOP2}", "", $tmpbuf2);
  3. $name = get_magic_quotes_gpc() ? stripslashes($cmtname[$cmtkey]) : $cmtname[$cmtkey]; //¥を削除
  4. $rc2name = blogn_html_tag_convert($name);
  5. if (function_exists(blogn_mod_asm4cmt_remove_trip)) $rc2name = blogn_mod_asm4cmt_remove_trip($rc2name);
  6. $tmpbuf2 = preg_replace("/\{RCNAME\}/", blogn_mod_asm4cmt_remove_trip($rc2name), $tmpbuf2);
  7. $RClink = "<a href=\"index.php?e={$val}#cmt{$cmtkey}\">";
  8. $RClinke = '</a>';

他のモジュールとの互換性

コメントアイコン&絵文字モジュール

2つのモジュールの連携に必要な改造をあらかじめ組み込んであります。

Comment Captcha

BlognPlus v2.6.0 では「Comment Captcha」の優先順位を「コメントスパム対策モジュール」より上にしてください。

BlognPlus v2.5.6 では「Comment Captcha」を導入しても、Captcha のチェックは無効になる場合があります。

キャプチャ

BlognPlus v2.6.0 以降で動作しなくなったので、「キャプチャモジュール」との連携はできなくなりました。

アップデートの仕方

:ver2.80 以降から BlognPlus v.2.5.1 以降のバージョンのみで動作します。
モジュールのアップデートの前に、BlognPlus 本体のバージョンアップを行ってください。

ver3.00 〜 3.27 → ver3.30

「*.cgi」以外のファイルを上書きアップロードしてください。

ver2.71 〜 2.85 → ver3.30

モジュールをアップデートする前に、保留中で公開したいコメントがあれば、公開作業を済ましてください。

トークン処理が必須になったので、スキンのコメント投稿フォーム内にトークン処理用のタグを追加して下さい。

全てのファイルを上書きアップロードしてください。
その後「caps.cgi」「config.cgi」「key.cgi」「ngwd.cgi」「rejected.cgi」のパーミッションを「666」等に変更してください。

前バージョンまでのキャップ発行用ファイル「cap.cgi」は、「caps.cgi」にリネームする事で設定を引き継ぐことができます。
また禁止ワード用リスト「ngword.dat」も「ngwd.cgi」にリネームする事で引き継ぐことができます。
しかし設定ファイルのフォーマットを変更したため「config.ini」を引き継ぐ事はできません。

全ての準備が整ったら、管理画面に入り、設定をやり直してください。
最初の1回に限り、パスキーも再生成する事をおすすめします。

最後に ver3.00 で不要になった「cap.cgi」「config.ini」「ngword.dat」「rejected.log」をサーバーから削除してください。

アンインストール方法

BlognPlus v2.6.x

  1. モジュール管理画面から「アンインストール」ボタンを押してアンインストール作業を行ってください。
  2. /asm4cmt/ ディレクトリは削除されていないので、今後モジュールが不要の場合は、FTP でこのディレクトリを削除してください。
    消さずに残した場合、モジュール管理画面の「未登録モジュール一覧」に表示されます。
  3. スキンのコメント投稿フォーム内に追加した独自タグは残しておいても問題ありません。

BlognPlus v2.5.6

  1. /asm4cmt/ ディレクトリを FTP で削除してください。
  2. スキンのコメント投稿フォーム内に追加した独自タグは残しておいても問題ありません。

コメントスパム対策モジュール ver3.04 以前

「ver3.04 以前」のモジュールで必要だった「index.php」の改造を施している場合は、モジュールをアンインストールする前に「index.php」の改造箇所を元に戻す必要があります。

「index.php」290行目あたりに追加した赤文字部分を削除してください。

  1. case "mode":
  2. if ($blogn_get_mode == "comment" || $blogn_post_mode == "comment") {
  3. include(BLOGN_MODDIR."asm4cmt/asm4cmt.php");
  4. //blogn_input_comment($blogn_user, $blogn_post_cid, $blogn_post_cname, $blogn_post_cemail, $blogn_post_curl, $blogn_post_cmes, $blogn_post_set_cookie, $blogn_server_remode_addr, $blogn_server_http_user_agent, $blogn_server_http_referer);
  5. exit;

バージョンアップ情報

2014/04/14
ver3.30 PHP5.4.x 以降に対応&新しいスパム判定処理追加
2009/05/27
ver3.27 BlognPlus v2.6.2 に対応
2009/05/27
ver3.26 Eモードでメール非通知にしてもメールが送信されてしまう不具合修正
2009/05/02
ver3.25 「キャプチャモジュール」と連携中止
2009/04/29
ver3.24 トークン処理を修正
2009/04/20
ver3.23 コメントアイコン&絵文字モジュールに対応
2009/04/16
ver3.22 管理画面でキャップ発行欄が非表示になる不具合修正
2009/04/16
ver3.21 デバッグ用コードが混入していたので削除
2009/04/14
ver3.20 「index.php」改造無しで動作するよう仕様変更
2009/04/12
ver3.13 一部のスパム判定処理を変更
2009/04/10
ver3.12 Eモード使用時に保留状態を解除できない不具合を修正
2009/04/10
ver3.11 BlognPlus v2.6.1 の外部スタイルシート読み込みに対応
2009/04/10
ver3.10 管理画面にメニュー追加
2009/04/10
ver3.07 無駄な処理を排除
2009/04/10
ver3.06 コメント投稿に失敗する不具合修正
2009/04/09
ver3.05 Firefox/Safari/Opera 閲覧時に管理画面に不具合があったのを修正
2009/04/05
ver3.04 スパムチェックに漏れがあったので修正
2009/04/05
ver3.03 悪意のあるコメントによりログが破損する脆弱性修正
2009/04/05
ver3.02 通知メールの件名に記事タイトルを追加
2009/04/04
ver3.01 BlognPlus v2.6.0 対応
2009/03/21
ver3.00 E モード追加等、メジャーバージョンアップ
2008/02/28
ver2.85 キャップ機能追加
2008/02/26
ver2.82 名前の変換に関する仕様を変更
2008/02/22
ver2.81 一部の環境でエラーが出る不具合修正(mbsubstr → mb_substr)
2007/09/27
ver2.80 BlognPlus v2.5.1 に対応
2007/02/04
ver2.71 管理画面の不具合修正
2007/01/12
ver2.70 スパム判定方法強化
2007/01/12
ver2.68 セキュリティ強化
2006/12/27
ver2.67 リファラのチェックを強化
2006/12/26
ver2.66 BlognPlus v2.4.0 に対応
2006/11/14
ver2.65 Dモード追加
2006/11/14
ver2.63 管理画面のログ表示が乱れる不具合修正
2006/11/05
ver2.62 保留コメントカウンター機能追加
2006/11/05
ver2.61 不正投稿されたコメントの処理を変更
2006/11/05
ver2.60 Cモード追加
2006/11/03
ver2.53 スパム判定方法強化
2006/11/03
ver2.52 管理画面のレイアウト変更
2006/11/03
ver2.51 ログ削除ボタン横にチェック欄追加
2006/11/03
ver2.50 迷惑コメント解除機能追加
2006/07/10
ver2.03 記事IDのない不正投稿をログに記録しないようにしました
2006/07/06
ver2.02 URL の処理を見直し
2006/06/17
ver2.01 管理画面のログ表示が乱れる不具合修正
2006/06/07
ver2.00 スパム判定機能にペナルティ制を導入
2006/04/15
ver1.46 トリップ文字列を取り除く関数にバグがあったので修正
2006/04/10
ver1.45 オートリンクのバグ修正
2006/03/21
ver1.44 マルチバイト関数が無効の環境での処理見直し
2006/03/21
ver1.43 トリップ機能のON/OFF設定が機能していなかったのを修正
2006/03/20
ver1.42 トリップ文字列を取り除く関数にバグがあったので修正
2006/03/17
ver1.41 最新コメント一覧からトリップ文字列を取り除く関数追加
2006/03/13
ver1.40 トリップ機能追加
2006/03/10
ver1.36 引用文にスタイルを付与する機能追加
2006/03/10
ver1.35 URLオートリンク機能追加
2005/11/30
ver1.34 中国語スパムをはじけるスパム判定方法を追加
2005/11/29
ver1.33 スパム判定ルーチンを改良
2005/11/28
ver1.32 英語コメントをはじくが機能していなかったのを修正
2005/11/21
ver1.31 メール通知の設定変更機能追加
2005/11/21
ver1.30 Captcha モジュールに対応
2005/11/21
ver1.21 セキュリティを強化
2005/09/30
ver1.20 BlognPlus v2.3.x のコメント有効期限機能に対応
2005/08/30
ver1.11 マルチバイト関数が使えない環境でエラーが出ないように修正
2005/08/05
ver1.10 エラーログを取得する機能追加
2005/08/03
ver1.00 英語コメント判別/禁止ワード設定/投稿者名文字数制限機能追加

サイト作成のヒント集に戻る