Joomla Slide Menu by DART Creations
phpBB3のスパム対策 PDF 印刷 Eメール
作者 UH   
2010年 1月 25日(月曜日) 23:56
mFactoryではフォーラムにphpBB3を使用していますが、スパムの投稿が増えてきたので
対策を行いました。

対策にあたり、以下を参考にしています。
http://forum.lolipop.jp/phpbb3/viewtopic.php?f=3&t=126


大まかな内容は、"Anti-Spam ACP" modの導入,改造(ひらがな,カタカナを含まないとspam判定)です。

■対策手順
1."Anti-Spam ACP" modの導入
  Lithium Studiosより"Anti-Spam ACP 1.0.2.zip"をダウンロードしてmodを導入します。
  以下のトピクで公開されています(2010/01/25時点)
  http://www.lithiumstudios.org/forum/viewtopic.php?f=31&t=941&start=0


2.スパム単語機能の有効化
  [ASACP_SETTINGS] - [ASACP_SPAM_WORDS] - "
3.スパム単語の登録
  [ASACP_SPAM_WORDS] - "Add Word"で以下の単語を登録します。
    adult
    casino
    cialis
    loan
    porno
    sex
    sexy
    viagra
  ※登録の際は、"Auto Regex"のチェックをONにします。 

phpbb3_spam1



4.スパム判定文言の日本語化
  1."phpBB3\language\en\mods\asacp.php"を"phpBB3\language\ja\mods\"へコピーします。
  2."phpBB3\language\jp\mods\asacp.php"の以下の文字列を編集します。
    変更前 : 'SPAM_DENIED' => 'This message was flagged as spam and has been denied.',
    変更後 : 'SPAM_DENIED' => 'このメッセージは、スパムとして判断された為に拒否されました。',

5."Anti-Spam ACP" modの改造
  1."phpBB3\antispam\asacp.php"
    "//public static function spam_words($data, $post_count = false)"行の下に、以下を追加
    ※Anti-Spam ACP 1.0.2では、666行です。

 // Japanese word check
 public static function spam_words_jpn($data, $post_count = false, $flag_limit = false)
 {
  global $cache, $config, $db, $user;

  if (!$config['asacp_enable'] || !$config['asacp_spam_words_enable'])
  {
   return false;
  }

  // Jpanese word chek
  $messages = (!is_array($data)) ? array($data) : $data;
  
  $ret = false;
  foreach ($messages as $text)
  {
   if (mb_convert_kana($text, "C") == $text)
   {
    if (mb_convert_kana($text, "c") == $text)
    {
     $ret = true;
    }
   }
  }
  
  return $ret;
 }


  2."phpBB3\posting.php"

 // START Anti-Spam ACP
 $sc_title = (empty($post_data['topic_title'])) ? $post_data['post_subject'] : $post_data['topic_title'];
 $asacp_is_spam = false;
 if ($config['asacp_spam_words_posting_action'] && antispam::spam_words(array($sc_title, $message_parser->message)))
 {
  switch ($config['asacp_spam_words_posting_action'])
  {
   case 1 :
    $user->add_lang('mods/asacp');
    antispam::add_log('LOG_SPAM_POST_DENIED', array($sc_title, $message_parser->message));
    $error[] = $user->lang['SPAM_DENIED'];
   break;

   case 2 :
    $asacp_is_spam = true;
   break;
  }
 }
 // END Anti-Spam ACP


の下に以下を追加

 // START Anti-Spam ACP
 $sc_title = (empty($post_data['topic_title'])) ? $post_data['post_subject'] : $post_data['topic_title'];
 $asacp_is_spam = false;
 if ($config['asacp_spam_words_posting_action'] && antispam::spam_words_jpn(array($message_parser->message)))
 {
  switch ($config['asacp_spam_words_posting_action'])
  {
   case 1 :
    $user->add_lang('mods/asacp');
    antispam::add_log('LOG_SPAM_POST_DENIED', array($sc_title, $message_parser->message));
    $error[] = $user->lang['SPAM_DENIED'];
   break;

   case 2 :
    $asacp_is_spam = true;
   break;
  }
 }
 // END Anti-Spam ACP

    

以上です。
[ASACP_SPAN_LOG]にスパムフィルタに引っかかったのが記録されます。
今回の対策で、英文のみスパムは大丈夫になりました。

コメントを書く

お名前:
コメント:
  The word for verification. Lowercase letters only with no spaces.
認証キーワード:
最終更新 2010年 2月 11日(木曜日) 17:54