作者 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] - "Enable Spam Words"を"はい"にします。 3.スパム単語の登録 [ASACP_SPAM_WORDS] - "Add Word"で以下の単語を登録します。 adult casino cialis loan porno sex sexy viagra ※登録の際は、"Auto Regex"のチェックをONにします。
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]にスパムフィルタに引っかかったのが記録されます。 今回の対策で、英文のみスパムは大丈夫になりました。
最終更新 2010年 2月 11日(木曜日) 17:54