◇◇ お知らせ ◇◇
< 2005.1.27 >
●blosxomプラグインを公開中。スパム対策用の拡張スパムブロッカーとリロード時の2重投稿防止対策のプラグインはお勧めです。最新版はブロッサムスターターキット研究室からリンクを張ってあります。
Oct 24, 2005
1周年
え、何の? って聞かれると思いますが、実は、ESBのv0.10をリリースしたのが、1年前の今日なのです。
最初は簡単な代物でしたね。今思えば。 writebackプラグインの中で実現しているスパム対策を少しづつ拡張していこうという意図で作り始めた物です。で、今はv0.40のつもりだったのですが、その後、頑張って当初計画していた内容は現時点でほぼ実装されています。ライトウェイトなプラグインとしたいので、データベースを参照するような大掛かりな物はやるつもりは無いです。フィルタリングベースでやれそうな事はほとんど実装したつもりです。
今回、スパムチェックをフルに使える様な対応もしているので、その意味でも完成度が高くなっています。 ですので、ここで一旦締めくくって、v1.00としようと思います。 それと同時にspam_blockerと名称変更します。
リリースはまだ少し時間がかかります。 もう一つ対策を実装予定がありますしね。
Oct 23, 2005
リファラに禁止ワード追加
公開ブログでも最近のリファラを入れているのですが、はっきりリファラスパムと分かる物は有りません。(怪しい物は全て弾いています。)
ところが、実験ブログの方に海外からリファラスパムがついていました。そして、それはどうも定期的につくようになっている様です。
そこで、リファラスパム対策として、リファラにも禁止ワードを追加しました。これまで来たリファラスパムはこれで全て弾けるはずです。
で、これにより、コメントスパムやトラックバックスパムでもリファラに禁止ワードを効く様になります。この為、投稿内容に禁止ワードが無くても、禁止ワードチェックで弾かれる(リファラにある禁止ワードで弾かれる)という事が起きますので、ちょっと違和感が有るかもしれません。でも、対策が少し強めになるという事でいい方向ですし、特に不具合も無いはずなので、そのままにしておきます。
Oct 19, 2005
TBアドレスに有効期限設定
ESBのダイナミックパスワードをTBにも適用出来る様にしました。 コメント投稿ページのトラックバックアドレスを見ていただければ分かりますが、通常のアドレスの後に?と次の行になってしまっていますが、ダイナミックパスワードが表示されています。
これにより、このページが作成された直後10秒以内と1日以降にこのTBアドレスを使ってTBを送った場合、スパムとして弾きます。 これがやりたかったので、暗号化は独自方式を採用しているのです。
cript関数を使ったら、".","/"といった文字に変換される事が有るのが嫌だったのです。
TBアドレスは通常パーマネントリンクページに書かれると思いますが、静的生成とかで静的ページにTBアドレスを表示される場合は、このチェックは外さないと、1日以降判定でスパムとして弾かれます。動的生成のblosxomだからこそ出来る対策です。
同一IPからの連続投稿禁止
同一IPからの連続投稿禁止機能を実装してみました。
最初のスパムはこの機能では防止出来ませんが、10秒以内に同一IPアドレスから投稿が有った場合、ブロックします。コメント・トラックバックそれぞれ有効・無効設定可能ですが、当然、今は両方有効にしてあります。
ところで、ここにはスパム来ませんねー。8/31を最後にぱったりです。
Oct 18, 2005
有効期限付パスワード使用条件
前のエントリで新しい対策として、有効期限付パスワード機能追加をお知らせしています。これは「ダイナミックパスワード」という名前をつけているのですが、1秒毎にパスワードが変わります。
コメント投稿ページを開いた時にそのページのダイナミックパスワードの値が確定するのがミソです。 これにより使用にあたって条件がついてしまいます。 それは「静的ページには適用不可」という事です。
動的生成のblosxomだからこそ使えるのです。
だから、コメント投稿を静的生成をしたページとか、キャッシュを取ったようなページに適用すると、使えないのです。 コメント投稿ページだけでも動的生成であれば適用可能です。
Oct 17, 2005
有効期限付パスワード機能追加
ESB0.40alphaで更にもう1段強力なスパムチェックを追加する事にしました。(昨年末くらいから構想していた対策です。) これはダイナミックパスワードと呼ぶことにしますが、簡単に言えばパスワードなんですが、有効期限が有るのです。しかも、独自方式ですが暗号化しています。
このパスワードをコメント投稿フォームからhidden属性で送る様にフレーバーの変更も必要です。コメント投稿ページを開く(ページをリロードする)毎に、このパスワードの値は変わります。(1秒単位で変わります。) 現在は、このページを開いてから10秒以内と1日以上経過したページから投稿した場合、スパムとして弾く設定にしています。(この時間はそれぞれ指定可能です。)
これにより、投稿ページをゲットしてすぐに投稿した場合、スパムとして弾く事になります。後日、同一IPからの連続投稿を弾く様にしたいと思っていますので、それと組み合わせれば、2回目からの投稿も弾けると思います。
また、1日以上古いページからの投稿を弾くので、過去にゲットしたコメントページからの投稿も弾かれます。
これは国内からのしつこいコメント投稿にも効果が有ると思いますよ。
Oct 16, 2005
ESB0.40alpha test
beta版にすぐに移行するかどうかはまだ検討中なのですが、ESB0.40のalpha版を本サイトに設置してみました。
訪問者側の状況(どうしてもプロキシ経由からとかウィルス対策ソフトでリファラがつかないとか)により特定のチェックで弾かれてしまうケースがあるのですが、今回のバージョンでは、そういうケースでは訪問者のIPアドレスで当該チェックを無効にする機能を実装しています。
という事で、現在、ESBの全てのスパムチェックを有効にしてあります。 過去にスパムチェックで弾いた方の中で記録が残っている何名かの方は個別にその時のスパムチェックを無効にしていますので、弾かれる事は無いはずですし、新たな訪問者の方を弾いても次回からは弾かない様にする事が出来ます。
このバージョンが完成すれば、ESBの持つ11種類のコメントスパムチェックと9種類のトラックバックスパムチェックを最大限に活用出来る事になりますので、早く完成させたいですね。
Oct 15, 2005
ESBを使っていてUTF-8で無い方へ
ESBの最新版0.39eをUTF-8でなく、shift_JISなサイトに設置したら、スパムは弾くがログ記録出来ないという症状を発見。
理由はイマイチ良く分からないのですが、ESBのコンフィギュレーション部で、
my $charset = 'sjis';
と設置しているブログの文字コードにあわせると問題無くなります。(これが正しい設置の仕方なので仕様的には問題無いのですが、)UTF-8以外のサイトに設置される方はご注意下さい。
そして、この理由が分かる方がいましたら教えて下さい。 Jcodeモジュールの仕様なのではと思うのですが、自信ない。
Oct 14, 2005
ESB0.40構想
ESB0.39eで0.3系を終える事になります。 0.3系では新しい対策の追加と機能追加が中心でした。
しかし、使ってみると一部の方を弾いてしまうので、デフォルト設定を無効にせざるをえない物(アクセプトエンコーディングチェックとか)と、デフォルトで有効にしているがやはり一部の方を弾いてしまう物が有ります(リファラチェック)。
0.4系ではこれらの対策をまず利用可能にする事を目的とします。
0.39eでログ記録が取り易い環境を提供する事が出来たので、仮に弾いたとしても復活させる事や投稿者へ連絡を取り、再度投稿していただく等の対応が取り易くなっています。
0.4系では、スパムでないのに弾いてしまうケースで、かつ、相手側で対応出来ないケースでは、弾いた原因になっているチェックを、そのIPアドレスだけ無効にする機能を追加する予定です。 この機能を活用すれば、2回目以降は弾かれる事がなくなります。
仮に踏み台にされてスパムを送られるようなケースでも、ESBは沢山のスパムチェックを持っていますので、他のチェックで引っかかる可能性が高く、こういう対応をしても良いだろうと考えています。
既にかなり実装は出来ていて、それなりに動きそうな所まで来ていますので、そう遠くない時期にアルファー版のテストを始める事になると思います。
Oct 11, 2005
禁止ワード例
ESBの最新版では禁止ワードを使える様になっています。 私が一番良いと思っている使い方は、URL欄に書かれたキーワードを禁止ワードに使う方法です。
CM目的の場合、本文やタイトルにリンクを貼るケースが多いですが、これはaタグチェックで弾けます。そうで無いケースは、URL欄だけをCMに使うケースです。この場合は、必ず誘導したいURLを書くので、IP制限やリファラチェック等で対策する場合と違って、偽造を気にする必要が有りません。 必ずいつもスパマーが誘導したいURLを書くはずです。
だから、URL欄のキーワードを禁止ワードに使うのは非常に有効だと考えています。そして、そこは通常は英数字で書かれています。単純に英数字の単語を禁止ワードに設定してしまうと、その単語をタイトルや本文に書く事が出来なくなってしまいます。
そこで、ある程度長い文字列にするか、通常使わない文字列を禁止ワードに設定する必要が有ります。 それで、今は
my $inh_word = 'online-|-online|casinos-|-casino|poker-|-poker|shemalestate|extreme-tit-torture';
を禁止ワードに設定しています。これが最適かどうか分かりませんが、参考にして下さい。もっと良い設定有るよとか情報は歓迎します。