Skip to content

Latest commit

 

History

History
93 lines (64 loc) · 3.55 KB

File metadata and controls

93 lines (64 loc) · 3.55 KB

スパムフィルタプラグイン(SpamFilter Plugin)

ポイント制のヒューリスティクスに基づいてスパム投稿を自動検出・ブロックするプラグインです。

ファイル配置: backend/plugins/SpamFilter/SpamFilterPlugin.php


概要

項目 内容
プラグイン名 スパムフィルタ
フックタイプ TEXT_FILTER | BEFORE_POST(複合フック)
バージョン 1.0.0
移植元 0ch_spamkiller.pl

判定ロジック

投稿内容を複数の条件でチェックし、各条件に該当するとポイントが加算されます。
合計ポイントが閾値以上になるとスパムと判定します。

判定条件

条件 デフォルトポイント 検出方法
名前欄が ASCII 文字のみ +2 半角英数記号・空白のみで構成
メール欄に @ を含む +5 実際のメールアドレスが入力されている
本文に <a href= または [url= を含む +5 HTML タグや BBCode リンクの使用
本文に URL を含む +3 http:// または https:// の存在
本文の ASCII 比率が閾値以上 +2 英語のみのスパム投稿を検出

判定例

名前欄: "Mike Smith"           → +2(ASCII のみ)
メール欄: "test@example.com"   → +5(@ 含む)
本文: "Visit https://spam.com" → +3(URL 含む)
──────────────────────────────
合計: 10 ポイント >= 閾値 10   → スパム判定

日本語の通常投稿では名前欄・本文ともに日本語が含まれるため、ポイントが加算されにくい設計になっています。


設定項目

ポイント設定

設定キー デフォルト 説明
name_ascii_point int 2 名前欄が ASCII のみの場合のポイント
mail_atsign_point int 5 メール欄に @ がある場合のポイント
text_ascii_point int 2 本文の ASCII 比率が閾値以上の場合のポイント
text_ahref_point int 5 本文に HTML/BBCode リンクがある場合のポイント
text_url_point int 3 本文に URL がある場合のポイント

閾値・比率設定

設定キー デフォルト 説明
text_ascii_ratio int 95 ASCII 比率がこの値(%)以上でポイント加算
threshold_point int 10 合計ポイントがこの値以上でスパム判定

アクション設定

設定キー デフォルト 選択肢
action select block block(投稿拒否) / warn(警告ログのみ、投稿は許可)

チューニングガイド

誤検出が多い場合

  • threshold_point を引き上げる(例: 10 → 15)
  • 各ポイント値を下げる
  • actionwarn に変更してログで様子を見る

スパムが通過する場合

  • threshold_point を引き下げる(例: 10 → 8)
  • 該当するスパムの特徴に応じたポイント値を引き上げる

ASCII 比率について

  • text_ascii_ratio は本文からタグと空白を除去した後のASCII文字の割合
  • 日本語掲示板では 95%(デフォルト)で英語のみのスパムを効果的に検出できる
  • 英語の投稿も許可したい場合は値を上げるか、text_ascii_point を0にする