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

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

主な機能

コメントスパム対策

荒らし対策

その他

※ 「Captcha(キャプチャ)」とは airwhite さんが作られた BlognPlus 用モジュールです。このモジュールを導入すると自動書き込みソフト等によるコメントスパム対策に有効な画像認証機能が使えるようになります。
「コメントスパム対策モジュール」と併用して使う事により、更に強固なシステムを築けます。

「コメントスパム対策モジュール」をインストールする事により、「キャプチャ」のインストール時に必要な「index.php」の書き換え作業は不要です。

動作環境

BlognPlus v2.5.1(テキスト版およびMySQL版)で動作確認しています。PostgreSQL版での動作は未確認です。

このモジュールは BlognPlus v2.5.0 以前のバージョンでは動作しません。

ダウンロード

利用規約

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

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

インストール方法(BlognPlus v2.5.1 の場合)

  1. ダウンロードした圧縮ファイル(asm4cmt.zip)を解凍する
  2. 「asm4cmt」フォルダを BlognPlus ディレクトリ下の「module」にアップロード
  3. 「cap.cgi」「config.ini」「ngwd.dat」「rejected.log」のパーミッションを変更する(666 等)
  4. 「index.php」250行目あたりを書き換え(後述)、改造した「index,php」で上書きアップロード
  5. モジュール管理から設定を変更する。
blognplus
   + module
      + asm4cmt
         - asm4cmt.php
         - blank.php
         - cap.cgi (キャップ発行用)
         - config.ini (設定ファイル)
         - control.php
         - display.php
         - function.php
         - index.html
         - info.php
         - ngwd.dat (禁止ワード用リスト)
         - rejected.log (ログファイル)
         - update.php

インストール方法

スキンの修正

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

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. <label for="c_name">name:</label><br>
  5. <input id="c_name" tabindex="1" name="blogn_cname" value="{CNAME}"><br>
  6. <label for="c_email">email:</label><br>
  7. <input id="c_email" tabindex="2" name="blogn_cemail" value="{CEMAIL}"><br>
  8. <label for="c_url">URL:</label><br>
  9. <input id="c_url" tabindex="3" name="blogn_curl" value="{CURL}"><br>
  10. <label for="c_mes">comments:</label><br>
  11. <textarea id="c_mes" tabindex="4" name="blogn_cmes" rows="10" cols="40" style="width: 400px"></textarea><br>
  12. <input type="submit" value="コメント送信">
  13. <input id="set_cookie" type="checkbox" value="on" name="set_cookie">
  14. <label for="set_cookie">Cookieに登録</label>
  15. </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. <label for="c_name">name:</label><br>
  7. <input type="text" id="c_name" tabindex="1" size="8" name="blogn_cname" value="{CNAME}"><br>
  8. <label for="c_email">email:</label><br>
  9. <input type="text" id="c_email" tabindex="2" size="8" name="blogn_cemail" value="{CEMAIL}"><br>
  10. <label for="c_url">URL:</label><br>
  11. <input type="text" id="c_url" tabindex="3" size="8" name="blogn_curl" value="{CURL}"><br>
  12. <label for="c_mes">comments:</label><br>
  13. <textarea id="c_mes" tabindex="4" name="blogn_cmes" rows="2" cols="20"></textarea><br>
  14. <br>
  15. <input type="submit" value="コメント送信">
  16. <input id="set_cookie" type="checkbox" value="on" name="set_cookie">
  17. <label for="set_cookie">Cookieに登録</label>
  18. </form>

index の書き換え(BlognPlus v2.5.1 の場合)

「index.php」250行目あたりに下記の赤文字部分を追加する。

  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;

「コメントアイコンモジュール」を導入している場合は、以下のようにしてください。

  1. case "mode":
  2. if ($blogn_get_mode == "comment" || $blogn_post_mode == "comment") {
  3. // add sxcicon bySAKI start
  4. list($_POST["blogn_cname"],$_POST["blogn_cmes"]) = sx_cicon_add($_POST["blogn_cname"],$_POST["blogn_cmes"], $_POST["sx_cicon"],$sxcicon_spam_flg);
  5. // add sxcicon bySAKI end
  6. include(BLOGN_MODDIR."/asm4cmt/asm4cmt.php");
  7. //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);
  8. exit;

モジュールの仕組み

このモジュールでは受信したコメントを複数の条件に照らし合わせます。各条件にはペナルティ付けがされており、その合計ペナルティが基準値(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)モード行う受信削除しないしない

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

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

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

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

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

ペナルティ

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

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

投稿者名文字数制限

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

トリップ機能

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

例:

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

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

キャップ機能

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

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

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

例:

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

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

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

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

使い方(拡張機能)

メール通知機能

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以上」は赤で色分けされています。

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

保留解除

スパム判定で「1.0」を超えたため、弾かれてしまったコメントは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」を改造する必要があります。


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

  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"].'">';

アップデートの仕方

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

ver2.71/2.80 → ver2.85

「config.ini」「ngword.dat」「rejected.log」以外のファイルを上書きアップロードしてください。
新たに「cap.cgi」が加わったので、「cap.cgi」のパーミッションを 666 等に変更してください
設定箇所が増えたため、アップデート後は必ず管理画面から設定を見直し[変更]ボタンを押してください。

ver2.00 〜 2.67 → ver2.85

モジュールをアップデートする前に、BlognPlus を ver2.5.1 以降にバージョンアップしてください。
「config.ini」「ngword.dat」「rejected.log」以外のファイルを上書きアップロードしてください。
新たに「cap.cgi」が加わったので、「cap.cgi」のパーミッションを 666 等に変更してください
設定箇所が増えたため、アップデート後は必ず管理画面から設定を見直し[変更]ボタンを押してください。

バージョンアップ情報

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 英語コメント判別/禁止ワード設定/投稿者名文字数制限機能追加

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