* [spam] URI spamフィルタ: 概要 [#wb00d081] - ページ: [[BugTrack2]] - 投稿者: [[henoheno]] - 優先順位: 重要 - 状態: 提案 - カテゴリー: 本体新機能 - 投稿日: 2006-11-18 (土) 23:48:10 - バージョン: #contents ** 関連: [#dc60ad85] - [[BugTrack/772]] [SPAM] Wiki SPAMming - [[開発日記/2006-11-04]] (official/dev) 内容ベースのspamフィルタ と 新規postについて - [[開発日記/2006-11-12]] spam.php: 冒険者向け: 現状の組み込み手順 - [[cvs:lib/spam.php]] ** メッセージ [#pd14f285] 現状実装しているspamフィルタについて、実現している部分の概要をまとめます。 + (特定の条件で)追加されるメッセージを調べ、以下の条件でブロックする -- URIの直書きによる外部リンク要求が既定の個数を超えた時 -- HTML Anchor タグによる外部リンク要求が既定の個数を超えた時 -- phpBB BBCode ないしその派生記法による外部リンク要求が既定の個数を超えた時 + ブロックされた場合: -- その内容は管理者にメールで通知される Subjectの例: [PukiWiki] [blocked] 自作プラグイン/csv2newpage.inc.php -- ブロックされた側には改行コード一つのみが送信される(※可変) ** 対象: URI追加型スパム [#a9766872] 「第三者でも投稿できるHTMLフォームを持っているWebアプリケーション」に対するスパム行為には、ある程度明確な特徴があります。簡単に言えば、スパム発信側は「(1)任意の外部へのリンク(HTMLのAnchorタグ)を (2)ある程度の期間 (3)対象のサイトに出現させる/消させない」という事に強いモチベーションを持っています。 *** メッセージに関する工夫 [#d2d1dd0b] 単純な(文字列比較や、正規表現による)フィルタを回避できるように、URIには、防御側が想定しないであろうバリエーションを持たせる事があります。また、複数のWebアプリケーションでもどれかが外部リンクとして成立する様に、複数の記法をミックスさせる事があります。また、文字列を隠蔽、ないし語句のゆれを作成するためにpercent-encodeを利用することがあります。 単純な例: メッセージとURI buy foobar http://example.org/buy/foobar buy foobar http://example.org#buy/foobar buy http://victim.example.org/go?http%3A%2F%2Fnasty.example.org 例: 多量のメッセージとURI buy foobar http://example.org/buy/foobar order foobar HTTP://EXAMPLE.ORG/ORDER/FOOBAR buy foobar http://example.org/buy/foobar order foobar HTTP://EXAMPLE.ORG/ORDER/FOOBAR 例: 同じURIを複数の方法で装飾 Nice site! Check about foobar http://example.org/buy/foobar <a href=" http://example.org/buy/foobar ">buy foobar</a> [url=http://example.org/buy/foobar]Buy Foobar[/url] AnchorタグやBBCodeなどの記法を用いたuri spamの特徴としては、「記法に関してはほぼ正確である」という点があります。この点については、それぞれの記法を解釈できるサイトについて、間違いなく記法を解釈させるためであると考えることができます。 <a href= http://example.org >buy example</a> <= "</a>"で閉じている <a href="http://nasty.example.com">visit http://nasty.example.com/</a> <a href=\'http://nasty.example.com/\' >discount foobar</a> [url]http://nasty.example.com/[/url] [url=http://nasty.example.com]visit http://nasty.example.com/[/url] -------- - 本日ここまで。 -- [[henoheno]] &new{2006-11-19 (日) 00:17:51}; #comment