totaltodayyesterday

フリーなCGIと自宅サーバー情報サイト

WordPressのコメントスパム対策用プラグイン(SPAM-BYEBYE)(2012/12/02)

(2012/12/02)
※安定版(Version2.1.2)をリリースしました。(文言の修正のみ)
(2012/08/29)
※安定版(Version2.1.1)をリリースしました。
(2012/05/30)
※安定版(Version2.1.0)をリリースしました。
(2012/04/29)
※安定版(Version2.0.4)をリリースしました。
(2011/08/27)
※安定版(Version2.0.3)をリリースしました。
(2011/07/26)
※ベータ版(Version2.0.3)をアップしました。
(2011/07/15)
※ベータ版(Version2.0.1)をアップしました。
(2011/07/12)
※ベータ版(Version2.0.0)をアップしました。
(2011/01/18)
※管理者がログインしている場合は検査対象から除外されるように変更しました。
(2008/09/20)
※プラグインを有効にするだけで使えるように修正しました。
※DNSDBLのデフォルトをdnsbl.spam-champuru.livedoor.comに変更しました。
(2008/11/02)
※名前欄を検査対象に追加しました。
※ソースの文字コードをUTF8に変更しました。
※投稿URL数の検査方法を変更しました。

■2.1.0から2.1.1以降へアップデートする際のご注意(設定を変更されている場合)
1.プラグイン編集からconfig.phpを選択し、全ての内容をコピーしてローカルに保存しておきます
2.プラグインをアップデートします
3.ローカルに保存した内容を全てコピーして、プラグイン編集にてconfig.default.phpにペーストしファイルを更新します
4.SPAM-BYEBYE設定画面を開き保存をクリックします

*上記作業により次回以降はアップデートしても変更内容が保持されるようになります

■特徴
日本語に特化して他言語圏spamを高確率で排除します

1.ひらがなが含まれていない
2.日本語(2バイト以上の文字)が含まれていない
3.1行の文字数がN文字を超えている
4.連続した改行の合計がN個を超えている
5.URLが含まれている
6.NGワードが含まれている
7.URLがURIBLデータベースに登録されている
8.投稿者のIPがDNSBLデータベースに登録されている

*チェック項目を順位付けられ早期に判別した場合残りの検査をしない為、処理が早く終わります
*1、2は日本語投稿で必ず出現する文字
*3はspamはあまり改行せずに投稿することがあるため
*4は他者の投稿を読ませない等の妨害で改行を多用するため
*5はURLの誘導
*6は禁止語句
*7、8は公平外部登録ブラックリスト照会
*6、7、8は処理に時間が掛かる為、検査の順位は下位を推奨
*6、7、8は検査項目が多いとタイムアウトする可能性があるため簡易検査程度に留めてください

■導入方法
(Version2.1.0以降)
wordpress.org > プラグインディレクトリのinstallationを参照してください

(Version2.0.0~2.0.4)
1.spam-bye2.2.0.4.zipをDLして解凍後、config.phpをエディタで開いてください。

2.基本設定

// スパムと判定する閾値
define(‘SB2_SPAM_LEVEL’, 100);

// スパムと判定された場合のアクション
// 0:SB2_SPAM_MESSAGEに指定したメッセージを表示
// 1:SB2_SPAM_REDIRECTに指定したURLにリダイレクト
define(‘SB2_SPAM_ACTION’, 0);

// スパムと判定された場合に表示するメッセージ
// SB2_SPAM_ACTIONが0の場合のみ有効
define(‘SB2_SPAM_MESSAGE’, ‘403 Forbidden’);

// スパムと判定された場合のリダイレクトURL
// SB2_SPAM_ACTIONが1の場合のみ有効
define(‘SB2_SPAM_REDIRECT’, ‘http://’);

// DNSBLデータベース
// 複数指定する場合は「,」で区切る
define(‘SB2_DNSBL_HOSTS’, ‘dnsbl.spam-champuru.livedoor.com,b.barracudacentral.org’);

// URIBLデータベース
// 複数指定する場合は「,」で区切る
define(‘SB2_URIBL_HOSTS’, ‘url.rbl.jp,dyndns.rbl.jp,notop.rbl.jp,multi.surbl.org,multi.uribl.com’);

3.チェック項目設定

[チェック内容]

sb2CharactorKana    ひらがなが含まれているか?
sb2Charactor 日本語(2バイト以上の文字)が含まれているか?
sb2Length 1行の文字数がN文字を超えていないか?
sb2FeedCount 連続した改行の合計がN個を超えていないか?
sb2UrlCount URLが含まれているか?
sb2NgWord NGワードが含まれているか?
sb2Uribl URLがURIBLデータベースに登録されているか?
sb2Dnsbl 投稿者のIPがDNSBLデータベースに登録されているか?

[チェック対象]

author 名前欄の入力値
url url欄の入力値
content    コメント欄の入力値

[チェックの順番]

SB2_OBJECT_番号の小さい順にチェックします

[フォーマット]

sb2CharactorKana    define(‘SB2_OBJECT_番号’, ‘sb2CharactorKana,チェック対象,加算するポイント’);
sb2Charactor define(‘SB2_OBJECT_番号’, ‘sb2Charactor,チェック対象,加算するポイント’);
sb2Length define(‘SB2_OBJECT_番号’, ‘sb2Length,チェック対象,加算するポイント,加算ポイントの最大値,許容文字数’);
sb2FeedCount define(‘SB2_OBJECT_番号’, ‘sb2FeedCount,チェック対象,加算するポイント,チェック改行数,許容改行数’);
sb2UrlCount define(‘SB2_OBJECT_番号’, ‘sb2UrlCount,チェック対象,加算するポイント,加算ポイントの最大値,許容URL数’);
sb2NgWord define(‘SB2_OBJECT_番号’, ‘sb2NgWord,チェック対象,加算するポイント,加算ポイントの最大値’);
sb2Uribl define(‘SB2_OBJECT_番号’, ‘sb2Uribl,チェック対象,加算するポイント,加算ポイントの最大値’);
sb2Dnsbl define(‘SB2_OBJECT_番号’, ‘sb2Dnsbl,加算するポイント,加算ポイントの最大値’);
sb2NgWord用
NGワード
define(‘SB2_NGWORD_番号’, ‘NGワード1,NGワード2,NGワード3′);

*SB2_OBJECT_番号は必ず連番にして下さい
*SB2_NGWORD_番号とSB2_OBJECT_番号は必ず同じ番号にして下さい

[sb2Lengthについて]

sb2Lengthはチェック対象の1行あたりの文字数が許容文字数を超過した場合にポイントが加算されます。許容文字数を超過する行が複数あった場合は該当する行数分ポイントが加算されます但し加算ポイントの最大値が0以外の場合はその値が最大値になります。

例)

define('SB2_OBJECT_1', 'sb2Length,content,20,0,200');

*コメント欄に200文字を超過する行が5箇所存在していた場合は20×5=100ポイントとなります

define('SB2_OBJECT_1', 'sb2Length,content,20,60,200');

*コメント欄に200文字を超過する行が5箇所存在していた場合(20×5=100)でも60ポイントとなります

[sb2FeedCountについて]

sb2FeedCountはチェック対象の連続した改行(チェック改行数以上の箇所)の合計が許容改行数を超過した場合にポイントが加算されます。

例)

define('SB2_OBJECT_1', 'sb2FeedCount,content,20,4,12');

*コメント欄に4個以上の連続した改行が存在しその改行数の合計が12を超過している場合は20ポイントとなります

[sb2UrlCountについて]

sb2UrlCountはチェック対象に含まれるURL数に応じてポイントが加算されます。但し加算ポイントの最大値が0以外の場合はその値が最大値になります。チェックした結果のURL数が許容URL数以下だった場合はポイントは加算されません。

例)

define('SB2_OBJECT_1', 'sb2UrlCount,content,20,0,0');

*コメント欄にURLが5個存在していた場合は20×5=100ポイントとなります

define('SB2_OBJECT_1', 'sb2UrlCount,content,20,50,0');

*コメント欄にURLが5個存在していた場合(20×5=100)でも50ポイントとなります

define('SB2_OBJECT_1', 'sb2UrlCount,content,20,0,5');

*コメント欄にURLが5個存在していた場合(20×5=100)でも0ポイントとなります

[sb2NgWordについて]

sb2NgWordはチェック対象にSB2_NGWORD_番号のNGワードにマッチした数に応じてポイントが加算されます。但し加算ポイントの最大値が0以外の場合はその値が最大値になります。

例)

define('SB2_NGWORD_1', 'NGワード1,NGワード2,NGワード3'); define('SB2_OBJECT_1', 'sb2NgWord,content,40,0');

*コメント欄にNGワードが2個存在していた場合は40×2=80ポイントとなります

define('SB2_NGWORD_1', 'NGワード1,NGワード2,NGワード3'); define('SB2_OBJECT_1', 'sb2NgWord,content,40,80');

*コメント欄にNGワードが3個存在していた場合(40×3=120)でも80ポイントとなります

define('SB2_NGWORD_1', 'NGワード1,NGワード2,NGワード3'); define('SB2_OBJECT_1', 'sb2NgWord,content,20,0'); define('SB2_NGWORD_2', 'NGワード4,NGワード5,NGワード6'); define('SB2_OBJECT_2', 'sb2NgWord,content,30,0'); define('SB2_NGWORD_3', 'NGワード7,NGワード8,NGワード9'); define('SB2_OBJECT_3', 'sb2NgWord,content,40,0');

*上記のようにsb2NgWordを複数指定してグループ毎に加算するポイントを変えることができます

[sb2Uriblについて]

sb2Uriblに複数のデータベースが指定してある場合、全てのデータベースを参照し登録されていた数だけポイントが加算されます。但し加算ポイントの最大値が0以外の場合はその値が最大値になります。

例)

define('SB2_OBJECT_1', 'sb2Uribl,content,20,0');

*コメント欄のURLが3箇所のURIBLに登録されていた場合は20×3=60ポイントとなります

define('SB2_OBJECT_1', 'sb2Uribl,content,20,40');

*コメント欄のURLが3箇所のURIBLに登録されていた場合(20×3=60)でも40ポイントとなります

[sb2Dnsblについて]

sb2Dnsblに複数のデータベースが指定してある場合、全てのデータベースを参照し登録されていた数だけポイントが加算されます。但し加算ポイントの最大値が0以外の場合はその値が最大値になります。

例)

define('SB2_OBJECT_1', 'sb2Dnsbl,20,0');

*投稿者のIPが3箇所のDNSBLに登録されていた場合は20×3=60ポイントとなります

define('SB2_OBJECT_1', 'sb2Dnsbl,20,40');

*投稿者のIPが3箇所のDNSBLに登録されていた場合(20×3=60)でも40ポイントとなります

[サンプル]

// チェック項目数(SB2_OBJECT_最後の番号を指定) define('SB2_ENTRY_OBJECT', 13); // 名前欄にURLがN個含まれる場合はN個x100ポイント加算(上限無し) define('SB2_OBJECT_1', 'sb2UrlCount,author,100,0,0'); // 投稿者のIPがDNSBLに登録されている場合は100ポイント加算(上限無し) define('SB2_OBJECT_2', 'sb2Dnsbl,100,0'); // URL欄のURLがURIBLに登録されている場合は登録数x90ポイント加算(上限無し) define('SB2_OBJECT_3', 'sb2Uribl,url,90,0'); // コメント欄のURLがURIBLに登録されている場合は登録数x90ポイント加算(上限無し) define('SB2_OBJECT_4', 'sb2Uribl,content,90,0'); // URL欄にURLがN個含まれる場合はN個x10ポイント加算(上限10ポイント) define('SB2_OBJECT_5', 'sb2UrlCount,url,10,10,0'); // 名前欄に日本語が含まれていない場合は20ポイント加算 define('SB2_OBJECT_6', 'sb2Charactor,author,20'); // コメント欄に日本語が含まれていない場合は70ポイント加算 define('SB2_OBJECT_7', 'sb2Charactor,content,70'); // コメント欄にひらがなが含まれていない場合は70ポイント加算 define('SB2_OBJECT_8', 'sb2CharactorKana,content,70'); // コメント欄にURLがN個含まれる場合はN個x30ポイント加算(上限無し) define('SB2_OBJECT_9', 'sb2UrlCount,content,30,0,0'); // コメント欄に200文字を超える行が含まれる場合はN行x30ポイント加算(上限無し) define('SB2_OBJECT_10', 'sb2Length,content,30,0,200'); // コメント欄に3個以上の連続した改行の合計が15個を超過した場合は40ポイント加算 define('SB2_OBJECT_11', 'sb2FeedCount,content,40,3,15'); // コメント欄にNGワードが含まれる場合はN個x20ポイント加算(上限無し) define('SB2_NGWORD_12', 'rolex,会員,price,visa,master'); define('SB2_OBJECT_12', 'sb2NgWord,content,20,0'); // コメント欄にNGワードが含まれる場合はN個x50ポイント加算(上限無し) define('SB2_NGWORD_13', '不倫,出会,18禁'); define('SB2_OBJECT_13', 'sb2NgWord,content,50,0');

4.wp-content/pluginsにspam-bye2ディレクトリをアップロードします

5.WordPressの管理画面->プラグインでspam-bye2を有効化しますstrong

6件のコメント

  1. とおりすが
    2012年12月2日

    ありがたく
    使わせてもらっています。
    ひとつ気になったのでコメントさせていただきます。

    設定画面で
    ・「日本語が含まれているか?」
    は適切ではないように思います。
    ユーザーは「含まれている」場合は加算されると
    受け取る可能性があるからです。
    私自身そうでしたので。。。
    疑問形ではなく
    「日本語が含まれていない。」
    とすればいいように思います。
    他の項目も
    「NGが含まれている」
    などした方が分かりやすいように思うのですが。

    ご参考までに。

  2. admin
    2012年12月2日

    確かにそうですね。
    直しておきます。

  3. jaja
    2012年12月12日

    開放性の高いサイトを運営してます。
    これ、ポスト(記事)の投稿時にも流用できますでしょうか?
    固定ページは、必要ないとは思うのですが、

    判定ポイントが超えたら、下書き、もしくは非公開になってくれると嬉しいのです

    • admin
      2012年12月12日

      >jajaさん

      やったことはないですが、恐らくできるかと。
      今ちょっと時間がないので、すぐの対応は難しいです。

  4. もと
    2012年12月12日

    スパム対策に困ってプラグインを探していたらこちらのサイトにたどり着きました。
    さっそく安定版(Version2.1.2)を使わせて頂いたのですが、
    設定について1点ご質問させてください。

    設定を変更し「保存」を押すと・・・
    Can’t open http://www.ブログURL/wp-content/plugins/spam-byebye/_config.php
    となってしまいます。

    とりああえずconfig.default.phpを直接編集して変更しているのですが、なにか改善方法はございますでしょうか?

    よろしくお願いします。

    • admin
      2012年12月12日

      >もとさん

      wp-contentディレクトリとspam-byebyeディレクトリにWWW(phpが実行されるユーザ)への書き込み権限が必要になります。

      _config.phpは一時ファイルで、これを作成してからwp-contentディレクトリに設定ファイルとしてリネームする仕様になっています。

コメントを残す

logo
RSS はてなブックマーク Twitter Facebook Google+
now loading...