Quasi-Spam Filter Plugin 使用者は自分の想定する状況に合わせた設定をすべし

http://hxxk.jp/2005/03/09/2330

記事データ

投稿者

望月真琴

投稿日時

2005-03-09T23:30+09:00

タグ
概要

Quasi-Spam Filter Plugin は非常に有用なプラグインで、様々な利用者の状況に対応する設定が行えます。翻せば、きちんと導入後の動作を考えた上で設定を行わないとプラス効果が無いばかりかマイナス効果を生んでしまうこともあるのです。 ( 自戒 )

リプライ

3 件のリプライがあります。

記事本文

正当なコメントもフィルタリングしていた

トラックバックスパムの対策を講じてみたQuasi-Spam Filter Plugin を導入しましたが、スパムではないコメントもフィルタリングしてしまっていたようです。

659 : e-luck : 2005/03/08 10:35

先日、このエントリーに幾つかSBMのサービスをコメントしたんですが、見事に反映されなかったっす(笑)

データベースを覗いても、それらしきものが残されていなかったため、おそらくフィルタリングの対象になってしまったのでしょう。 e-luck さん ( Lucky bag::blog ) 、申し訳ありませんでした。

何故フィルタリングしてしまったのか ?

これは私が Quasi-Spam Filter Plugin を導入した際に、自分で動作テストを行わなかったことに原因があります。 Quasi-Spam Filter Plugin の機能自体に問題があるわけではありません。

# Set your spam pattern
our $COMMENT_PATTERN = '<h1>|<a\s'; # H1 or A elements

Quasi-Spam Filter Plugin をノンカスタマイズで使用した場合、コメント中に <h1> または <a  という文字列が含まれていると、フィルタリングを行います。 そして、フィルタの動作は コメントが成功した場合と区別が付かないが、裏では削除されている というものになります。

そして、この条件ではスパムではないコメントもフィルタリングに引っかかる可能性が高いのです。 例えば、 e-luck さんが 「カラー液晶の iPod mini は年内に出荷されるみたいですよ」 という、文中にリンクを交えたコメントを投稿しようとした場合、コメント欄に書き込む文字列は <a href="http://www.lucky-bag.com/archives/2005/02/ipod_mini.html">カラー液晶の iPod mini は年内に出荷されるみたい</a>ですよといったものになると思います。

すると、 <a  というフィルタルールによってフィルタリングが行われてしまうわけです。 おそらく、 e-luck さんの当該コメントも、私にソーシャルブックマークサービスを教えて下さろうとしたためにフィルタリングに引っかかってしまったのでしょう。

対策その 1 - Quasi-Spam Filter Plugin をカスタマイズする

正当なコメントに対する意図しないフィルタリングを防ぐ為には、プラグインの記述をカスタマイズするという手段が考えられます。 これは更に 2 つの方法に分かれます。

<a  というフィルタルールを除外する

これは一例ですが、 our $COMMENT_PATTERN = '<h1>|<a\s'; # H1 or A elements という記述を、 our $COMMENT_PATTERN = '<h1>'; # H1 elements とすると、 a 要素によるフィルタリングは行わなくなります。

しかし、多くのコメントスパムが自サイトへのリンクを書き込もうとするために、この対策はスパムフィルタリングとしては現実的ではありません。 ただし、正当なコメントの投稿者が <a href="http://example.com/">hoge</a> 形式の内容を含めることが予想される場合には a 要素のフィルタリングは外した方が良いでしょう。

フィルタリアクションを CommentFilter 以外のものにする

フィルタリアクションのデフォルトは CommentFilter であり、これは コメントが成功した場合と区別が付かないが、裏では削除されている といったものですので、スクリプト等によるコメントスパムには効果的でも、正当なコメントをしてくれる方には「何で反映されないの ? 」という疑問が残ることになります。

そこで、 CommentError などのリアクションにしておくと、スクリプトによる投稿以外にはとりあえず「投稿できなかった」ということを通知できます。 ( ただし、正当なコメントでも投稿が行えないことに変わりはありませんが。 )

対策その 2 - Quasi-Spam Filter Plugin をノンカスタマイズのままで対処する

プラグインのカスタマイズはよく分からない、変にいじって動作しなくなったらどうしよう、という場合はプラグイン以外の場所を工夫することになります。

やはり最も簡単なのは、コメント投稿欄の近くに 「 <a href="http://example.com/">hoge</a> 形式の記述はできません。 URI は自動でリンクアンカーを付与するのでそのままお書きください。」 といった感じの注意書きを書くことでしょうか。 ( 注意 : 自動でリンクアンカーを付与するかどうかは「ウェブログの設定」に依存します。 )

先ほど自分でテストして分かったのですが、ノンカスタマイズの状態では、 「投稿は正常に行われたように見えるが実際には反映されず、また投稿した内容を取り戻すことはできない」 という結果になります。

ノンカスタマイズでフィルタリングを行う場合、注意書き等を明記しておかないと、せっかくコメントをしてくれようとする方の気分を害してしまう可能性がある、ということを覚えておいてください。 ( 私も自戒を込めて覚えておきます。 )

私が取った対策

現時点では、 COMMENT_PATTERN から <a  を除外することで対処としました。

元々コメント中に HTML タグの記述を許可していなかったため、 a 要素が含まれたコメントスパムも ( 消去する手間がありますが ) 実害はありませんでした。 そのため、スパムが投稿されたらその都度文面から特徴的な単語 ( poker とか ) をフィルタリングの対象にするという「後手」の対応を敢えて取ることにしています。 ( もちろん、今後の状況によってはまた変更するかもしれませんが。 )

リプライ

3 件のリプライが送られています。

2005-03-10T12:55+09:00 - e-luck

何となく、そんな気がしていましたが、やはりフィルタリングに引っかかってましたか。 その時のコメントには、SBMサービスのURIをコピペしたような記憶があります。で、プレビューで自動的にリンクアンカーが付与されて、その後、一回コメントを修正した後に、ポストしたんだっけかな。あれ、もう一回プレビューした後だったっけ。うーん、曖昧ですが。

2005-03-11T14:06+09:00 - Quasi-Spam Filter Pluginについて < Lucky bag::blog

a タグをフィルタリングしていると、「URLを自動的にリンクにする」と設定している場合、コメント投稿時にプレビューするかしないかで、判定が変わるようです。

2005-03-12T22:27+09:00 - 真琴

プレビューのことは見落としていました……。自分がふだんプレビューをしないので、プレビューの時点で URI がリンクになってフィルタされるとは予想外。 HTML タグ自体は許可したくないけど、 URI のリンクアンカー化だけは行いたいので、本文中にもあるとおり特徴的な単語でフィルタリングすることにします。 e-luck さんんの検証記事およびトラックバックに感謝です。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など