Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2017-05-27 14:27:35

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 78

掲示板FluxBB のスパム対策について

掲示板FluxBB のスパム対策について

靴の宣伝スパムが頻発しているようなので
掲示板のFluxBBソースコードをダウンロードしてみました。

投稿処理のpost.phpをみると
$errors[] = に代入するとエラー処理されるということはすぐにわかりました。

flux_hookというイベントのフックがありましたので

ソースコードを解析して、簡易のadonを作ってみました。

flux_hook\(.+post
で検索するとイベントのリストが抽出できます
post_before_validation
post_after_validation
post_before_header
post_before_submit
quickpost_before_submit

バージョンが違うと動作しないかもしれませんが、
組み込むといいかもしれないです

fluxbb-1.5.10/addons/postfilter.php
のような名前で
以下の内容を保存すると機能します。

<?php

class addon_postfilter
{
    public function register($manager)
    {
        $manager->hooks['post_after_validation'][] = array($this, 'post_after_validation');
    }

    function post_after_validation()
    {
        global $errors, $message;
//        global $user_title, $username, $email;
        if (!empty($errors) || empty($message))
            return;
//  ★  $errors[] = にメッセージを代入するとエラーとして処理される
        if ($this->is_SpamPost())
        {
            $errors[] = 'スパムの疑いがあるため投稿できません。';
            return;
        }

        // その他のNGワードなどを処理する
        $ngwords = array('sportswear');
        foreach ($ngwords as $findme)
        {
            if (stripos($message, $findme) !== FALSE)
            {
                $errors[] = '禁止語句が使われているようです。投稿できません。';
                return;
            }
        }
    }

    function is_SpamPost()
    {
        global $message;
        if (preg_match_all('/\$\s*[0-9]+/', $message) // 通貨ドルの可能性あり
            && (stripos($message, 'sale') !== FALSE) // スパム確定
            )
        {
            return true;
        }
        foreach($this->get_spam_patterns() as $pattern)
            if (preg_match_all($pattern, $message))
            {
                return true;
            }
        return false;
    }

    function get_spam_patterns()
    {
        return
            array(
                '#adidas.+sale#i',
                '#(adidas.+nike|nike.+adidas)#i',
                '#(shoes?|sale|adidas|nike)\.co\.uk#i'
            );
    }

}

編集者 ピヨピヨbird (2017-05-27 14:38:07)


Attachments:
zip postfilter.zip, Size: 1.38 KiB, Downloads: 10

オフライン

Board footer