セキュリティに問題のあるコードの改善をおこないました。
jp8以前のバージョンにはCSRF攻撃に対する脆弱性が存在します。この問題についてはNP_0TicketForPluginで解決することもできますが、このバージョンでは独自に対策を行っています。
ダウンロードはこちら [NP_Blacklist v0.98 jp9][508clicks]
NP_Blacklist v1.0をリリースしています。
※利用方法についてはNucleusCMS Japanのplugins:np_blacklist [Nucleus CMS Japan Wiki]にまとめてあります。
動作確認はNucleus 3.24(UTF-8)、PHP 4.4.4環境で行っています。
動作確認報告、バグ報告はこのエントリへ、コメント・トラックバックをお願いします。
† [Changed] 正規表現に/m修飾子を追加
ブラックリスト照合時の正規表現に/m修飾子を追加しました。
複数行の行頭にマッチするような正規表現の記述が可能になります。
† [Added] Ticket処理を追加(CSRF対策)
CSRF攻撃に対する脆弱性について対策を行いました。
この問題についてはNP_0TicketForPluginで解決することもできます。
† [Added] localhostからのアクセスをspam判定しないようにした
ループバックアドレス(127.0.0.x)からのアクセスをspam判定しないようにしました。
† [Added] ユーザーがログインしている場合にspam判定しないようにした
ログイン済みのユーザーに対してspam判定をしないようにしました
† [Changed] PreSkinParseイベントを廃止
PreSkinParseイベントへの対応を廃止しました。
これによりIPブロックを有効にしていて、spam判定された場合にでも、ページが表示されるようになります。
※これまでどおり、コメント、トラックバックについては遮断されます。
気付いた点が1つ。
『Test Blacklist』で、イコールを入れるとそれ以降の文字列を判定してくれません。
a=(禁止ワード)
みたいな入力で確認できると思います。
もちろん、$_GET["expression"]の時点でイコール以下が切り取られているためだと思われますが、urlでは入力したイコールは%3Dなんで、この切り取られちゃう現象がv3.24のごにょごにょのせいなのかどうか頭が混乱してしまいました。
パッチは何も入れていない状態です。(パッチ入れたらまた変化するかな)
投げてしまってごめんなさい。
『Test Blacklist』で、イコールを入れるとそれ以降の文字列を判定してくれません。
あれ、これって入力するときの話ですか?
それともspam判定するときの話?
入力するときの話であればコアのバグ($ _GET["expression"]の=以下切り取られ問題)の関係だと思います。入力は%3Dでも、$_GET[]に入ると=にデコードされる話なので。CVS版コア(もしくはdevに投げたパッチ)で直るんではないかと。
コアにパッチを入れてしまっているせいだと思うんですが、うまく再現できないんですよね、、、、
ローカルネットワーク(192.168.0.0/24)からだと、niku.2ch.netがスパムと判断してしまいます。
IPアドレスのみのホワイトリストの設定があればよいと思います。
ありがとうございます。検討します。
お手数ですが、教えてください。
「href=...」が3回以上含まれるコメント、
「http...」が3回以上含まれるコメントをはじく
という設定は、どこに記述するのですか?
順を追って説明しますが、インストールをすると管理画面の左側のメニューに「Blacklist」という項目が出てくるので、それを開くと「Blacklist menu」という画面が出てくると思います。
「Blacklist menu」の画面で、「Blacklist Editor」を選ぶと、
・expression
・comment
・enable regular expressions ?
という3つの入力項目があるページになると思います。そこが、Blacklistの編集画面になります。
さらに登録の仕方ですが、expressionに3回以上含まれるコメントをはじく文字列、commentには何か適当なコメントを入れ、さらにenable regular expressions ?にチェックを入れた状態で「add」ボタンを押すと、ルールが登録されます。
という感じでいかがでしょうか?
お返事ありがとうございます。
expressionに3回以上含まれるコメントをはじく文字列を入れると、1回でもその文字列があると、はじかれてしまします。
「href=...」「http...」が3回以上含まれるコメントをはじくようにしたいのです。
あくまでも3回以上で、はじきたいのです。
教えてください。
これだけでは僕のほうでも良くわからないので、もうちょっと詳しく教えてください。
・使っているNP_Blacklistのバージョン
・設定しているexpression
・はじかれた場合に残るログの内容(Blacklist Logから見ることができます)
バージョンは、0.98 jp9です。
設定しているexpressionは、httpです。
はじかれた場合に残るログの内容は、comment: http です。
コメントと言っても、コメント欄ではなく、メールまたはWebサイトの入力欄にhttpを入れると、スパムページに飛ばされてしまいます。
原因は何でしょうか?
教えて下さい。
状況が理解できました。
今のBlacklistではコメント、名前、メールまたはWebサイトなど全ての入力欄をつなげて、その中からexpressionで検索するようになっているので、expressionにhttpを設定するとスパム判定されてしまうのは仕方がないことです。
たとえばですが、正規表現を有効にして
(http(.|\n|\r)*?){2,}
とすればhttpが2つ以上の場合にspam判定となるので、メールまたはWebサイト欄は入力できると思うのですが、いかがでしょうか?
この正規表現 (http(.|\n|\r)*?){2,} というのはどこかに追加記入するのですか?
すみません初心者で・・・。
お手数ですが教えてください。
この正規表現 (http(.|\n|\r)*?){2,} というのはどこかに追加記入するのですか?
これもBlacklist Editorから設定します。以前のhttpが設定されているままだったら、それをまず削除してください。
その後で、(http(.|\n|\r)*?){2,}をexpressionに入力し、enable regular expressions ?のチェックボックスをオンにした状態で登録してください。
v1.0をリリースしたので、そちらのほうが画面が日本語になっているので操作しやすいかもしれません。
http://blog.cles.jp/item/1836
v1.0にアップし、出来ました!
ありがとうございました。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。