Nucleus(JP)フォーラム

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

ログインしていません。

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

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

掲示板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: 107

オフライン

#2 2018-02-02 21:32:32

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

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

スパムの自動アカウント取得について

スパムが登録で手動を介しているとは思えないので
登録ページのhtmlソースを表示すると
コメントに
[modif oto] - mod VSABR Very Simple AntiBot Registration
とあるので
https://fluxbb.org/resources/mods/very- … istration/
を組み込んでいるのでしょうか?

ダウンロードしてソースを見る限り計算式と答えの定型文を突っ込むだけの
シンプルな仕組みでした
html出力フォーマットが決まっているので正規表現で質問の数式を抜き取れますし
google検索に計算式のリクエストを送れば計算の答えがそのまま返ってきますから、
ほぼ通常のリクエストとかわらない工程で
自動化でアカウント取得リクエストができます。

次の対策をしておかないと、またやってくると思います
・出力ソースからmod VSABRのコメントを削除する
・'captcha_q'を別の文字に一括置換する
・'captcha'も可能なら一括置換する(面倒なので未調査)
・質問、答えを数式でないものに変更する。

そのまま使うにしても、
最低、「captcha_q」と「コメントタグ」をどうにかしないとあまり効果が期待できないと思います。

最新版は files/plugins/vsabr/search_insert.phpにだけ'captcha_q'が含まれていました。
(置換例) bashシェル

captcha_qを置換
 sed -i "s/captcha_q/日本語っぽい新しい識別子/g" files/plugins/vsabr/search_insert.php
コメントを削除
 sed -i 's/<!--[^<>]*-->//g' files/plugins/vsabr/search_insert.php

で簡単に変更できます。

オフライン

#3 2018-02-12 22:07:58

yama
Administrator
登録日: 2005-07-07
投稿: 1,265
ウェブサイト

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

すみません、こちら確認が遅くなりました。

・出力ソースからmod VSABRのコメントを削除する
・'captcha_q'を別の文字に一括置換する
・'captcha'も可能なら一括置換する(面倒なので未調査)
・質問、答えを数式でないものに変更する。

上記、了解です。後ほど確認します。

<Limit POST>
SetEnvIf Accept-Language "^ja" jp
order deny,allow
deny from all
allow from env=jp
</Limit>

とりあえずの一時しのぎですが、上記のような仕掛けを.htaccessに入れてみました。

オフライン

#4 2018-03-16 21:48:13

yama
Administrator
登録日: 2005-07-07
投稿: 1,265
ウェブサイト

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

http://japan.nucleuscms.org/forum/viewt … 281#p31281
テスト投稿
「adidas」という文字列を投稿できないはず?

オフライン

#5 2018-03-16 21:51:44

yama
Administrator
登録日: 2005-07-07
投稿: 1,265
ウェブサイト

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

あれ?また今度調べてみます

オフライン

Board footer