タグ:PukiWiki, SEの良心, PukiWiki改造計画, PukiWiki本体改造, ライブラリ, PukiWiki用スパムフィルタライブラリ, セキュリティ, サンプル, 参照記事
2025/12/20 (土) 更新
スパムフィルタライブラリ
概要
更新履歴
- 2025/12/20 Ver1.1.0
- プログラム構成変更
- IPアドレス帯・国コード情報定義ファイル(delegated-apnic-latest)更新
- 2025/02/25 Ver1.0.0
- スパムログ内容にプラグイン名を追加
- スパムログ内容のページ名をSEOページ名に変更
- IPBLフィルタでIPアドレスを正しく複数指定できるように仕様変更
- PukiWikiエターナルウェア版設定ファイルに設定内容を移管
- 正式公開(ライセンス変更)
- 2021/03/30 Ver0.10.0
- スパムログ出力先とスパムログファイル名変更等
- HTMLプラグイン使用チェックフィルタを新規追加
- 2020/05/14 Ver0.9.0
- 2019/12/29 Ver0.8.5
- empty(空)入力チェックフィルタのデフォルト設定を変更
- 2019/12/08 Ver0.8.4
- デフォルトのフィルタを最低限セットするように方針変更
- 2019/12/08 Ver0.8.3
- 2019/12/08 Ver0.8.2
- フィルタによってtextareaの内容もチェックするように修正
- 2019/06/01 Ver0.8.1
- スパム判定した場合に「spam_filter」フォルダにログを出力するように修正
- 2019/05/29 Ver0.8.0
- 暫定初公開(ソースをPukiWiki1.5.2に移植)
書式
spam_filter($plugin)
PukiWikiエターナルウェア版設定ファイル
spam_filter.php
// スパム判定フィルタ条件
define('SPAM_FILTER_COND', '#ngempty() or #usehtml() or #recaptcha() or #ipbl() or #urlnum() or #ipdnsbl()');
// ホワイトURL(自ドメイン等)
define('SPAM_FILTER_WHITEREG', '/dajya-ranger\.(com|net|jp)/i');
// URL抽出正規表現
define('SPAM_FILTER_URLREG', '/(?:(?:https?|ftp|news):\/\/)[\w\/\@\$()!?&%#:;.,~\'=*+-]+/i');
// NS(ネームサーバ)キャッシュファイル
define('SPAM_FILTER_DNSGETNS_CACHE_FILE', DATA_HOME . 'dns_get_ns.cache');
// NS(ネームサーバ)キャッシュ日数
define('SPAM_FILTER_DNSGETNS_CACHE_DAY', 30);
// IPアドレス帯・国コード情報定義ファイル
define('SPAM_FILTER_IPCOUNTRY_FILE', DATA_HOME . 'delegated-apnic-latest');
// Windows判定
define('SPAM_FILTER_IS_WINDOWS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'));
スパムフィルタ内容
スパムフィルタは次に挙げる様々なフィルタを組み合わせてスパムを排除するライブラリで、初期設定はPukiWikiエターナルウェア版共通ファイルに含まれるPukiWikiエターナルウェア版設定ファイル(pukiwiki.dre.ini.php)に設定されている。
設定内容の追加や修正は自由で、組み合わせるフィルタとスパムチェック対象となるプラグインは運用に合わせて自由に設定可能になっており、仮に自作プラグインであってもスパムフィルタによるスパム排除が可能になっている。
ngreg:NGワードフィルタ
- 概要
- 入力されたテキストにNGワードが入力されていないかフィルタリングする
- NGワードは正規表現で指定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
url:URLフィルタ
- 概要
- 特定のURLからの入力かフィルタリングする
- URLは正規表現で指定
- 対象プラグイン
- edit:ページ編集画面
- pkwkmail:メールフォーム
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
atag:アンカータグフィルタ
- 概要
- HTMLのAタグ(ハイパーリンク)の入力がないかフィルタリングする
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
onlyeng:英語オンリーフィルタ
- 概要
- 半角英数のみの入力をフィルタリングする
- 半角英数のみの入力はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urlnum:URL個数許容フィルタ
- 概要
- 指定個数以上のURLの入力がないかフィルタリングする
- 指定個数以上のURLの入力はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
ipunknown:IP逆引きフィルタ
- 概要
- IPが逆引き可能かフィルタリングする
- 逆引き出来ないIPからの入力はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- attach:ページファイル添付
ips25r:S25R(Selective SMTP Rejection)フィルタ
- 概要
- IPから逆引きしたホスト名がS25R(中継サーバ以外)に該当するかをフィルタリングする
- ホスト名が取得できないか、ホスト名がS25RにマッチするIPからの入力はスパム認定
- S25RはPukiWikiエターナルウェア版設定ファイルに定義済み(変更可能)
- 対象プラグイン
ipbl:IPブラックリストフィルタ
- 概要
- PukiWikiエターナルウェア版設定ファイルに設定されたIP(またはホスト名)からの入力をフィルタリングする
- 例:192.168.1.1~255→^192\.168\.1\.([1-9]?\d|[12]\d\d)$(カンマ区切りで複数設定可)
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- attach:ページファイル添付
ipdnsbl:DNSBL(IP)フィルタ
- 概要
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- pkwkmail:メールフォーム
ipcountry:国コード(IP)フィルタ
- 概要
- IPが許可しない国コードからかフィルタリングする
- 許可しない国コード(デフォルトは支那・韓国・ウクライナ)のIPからの入力はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- pkwkmail:メールフォーム
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
uaunknown:HTTP_USER_AGENT不明フィルタ
- 概要
- UserAgentを取得してフィルタリングする
- UserAgentの値が設定されていないか、パターンにマッチしない場合はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- attach:ページファイル添付
acceptlanguage:HTTP_ACCEPT_LANGUAGEフィルタ
- 概要
- アクセスしてきたブラウザの言語を取得してフィルタリングする
- AcceptLanguageの値が設定されていないか、許可しない言語(デフォルトは支那語)からの入力はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- attach:ページファイル添付
filename:アップロードファイル名フィルタ
formname:フォーム名フィルタ
- 概要
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urlbl:URLブラックリストフィルタ
- 概要
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urlcountry:国コード(URL)フィルタ
- 概要
- URLが許可しない国コードからかフィルタリングする
- 入力された内容からURLを抽出し、URLからホスト名とそのIPを取得、許可しない国コード(デフォルトは支那・韓国・ウクライナ)の場合はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urldnsbl:DNSBL(URL)フィルタ
- 概要
- 対象プラグイン
- edit:ページ編集画面
- pkwkmail:メールフォーム
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urlnsbl:NS(ネームサーバ)ブラックリストフィルタ
- 概要
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
urlnscountry:国コード(URL→NS)フィルタ
- 概要
- URLが許可しない国コードからかフィルタリングする
- 入力された内容からURLを抽出し、URLからホスト名とそのドメインのNSを取得、許可しない国コード(デフォルトは支那・韓国・ウクライナ)の場合はスパム認定
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
akismet:Akismetフィルタ
- 概要
- Akismetによるスパムチェックをフィルタリングする
- 入力された内容を編集してAkismetに送信し、Akismetによるスパムチェックを利用する
- 本フィルタを利用するにはAkismetのAPIキーの設定が必要
- 対象プラグイン
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
- pkwkmail:メールフォーム
recaptcha:reCAPTCHAフィルタ
- 概要
- reCAPTCHA(v2またはv3)による認証とBot識別閾値をフィルタリングする
- reCAPTCHAの認証とPukiWikiエターナルウェア版設定ファイルに設定している閾値よりスコアが大きくない場合はスパム認定
- 本フィルタを利用するにはreCAPTCHA(v2またはv3)のSITEキーとSECRETキーの設定が必要
- 対象プラグイン
- edit:ページ編集画面
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
ngempty:empty(空)フィルタ
- 概要
- 入力があるかどうかをフィルタリングする
- 入力がない場合はスパム認定
- 対象プラグイン
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
usehtml:PukiWiki用HTML出力プラグイン使用フィルタ
- 概要
- 対象プラグイン
- article:掲示板
- comment:コメント
- pcomment:レス付きコメント
スパムを検知して排除したログを出力
- ファイル名
- ログファイル内容
- 日付(YYYY/MM/DD hh:mm:ss)・リモートIPアドレス・リモートホスト名・SEOページ名・プラグイン名・スパム内容
- ※項目間の区切りはタブ文字(\t)
参照記事
人気上位6ページ
NULL
今日の人気上位6ページ