JavaScriptを使ってスパムによるCGIの過負荷を防ぐ

Posted by
ぴろり
Posted at
2006/12/04 21:27
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ
コメントスパムやトラックバックスパムによる過負荷を防ぐにはどうしたらいいですか

絨毯爆撃をくらったら、少なくともサーバーにアクセスはあります。
CGIでスパム排除するとしても、CGIは動いてしまいます。
そこで質問です。何とかspam攻撃を有効に排除する方法はないのでしょうか。
.htacceessでIPで弾くのも、常時変化し続ける毛唐攻撃者のIPには対処できません。

 このサイトでも様々な対策を紹介していますが,その多くが を弾くというものです。 例えば,CAPTCHAに対して非常に強力ですが, この引用にあるように への絨毯爆撃が行なわれるような場合には単なる負荷の一因になってしまいます。 要は,如何にしてスパマーを に近づかせないかということです。
 そこでを使ってスパマーから を隠蔽する方法を提案してみます。
この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する | Twitterにポストする

簡単な原理

 は, 「ボット」と呼ばれるプログラムを使って送信されています。 ボットは行為を行なうサイトやページをクロール(crawl)すると, 取得した を文字解析して投稿用の URL を取得し, その URL 目掛けてを送信していると推測されます。
 以前, では投稿用の (mt-comment.cgi) をリネームするなどの手段が有効でしたが,最近ではこの手法はほとんど効果がありません。 なぜなら,リネームした後のファイル名が に含まれてしまっているために, ページの を文字解析すれば簡単に変更後のファイル名が知れてしまうからです。

 ボットは対象のページを高々文字解析している程度と推測されます。 そこで,この段階で投稿用 の場所が隠蔽できればボットは にアクセスできません。 例えば次のようなフォームをボットは正しくパスできないことになります。

現時点ではコストに見合わないという理由だけで, 将来,このギミックを回避するボットが登場する可能性は否定できません。

 人間がを通してアクセスした場合, commentform の送信先は you_are_welcome.cgi に変更されます。 しかし実際のところ,この ボットと同様に文字解析だけを行なうと, フォームの送信先は I_am_a_spammer.html になり, を見ただけではフォームの送信先が you_are_welcome.cgi とは判りません。 ボットが のように意味解析を行なえないと云う弱点を利用するわけです。

 ただ,この方法には問題もあって,を解釈しない(今はほとんど無いと思いますが)や, 上の不安からをオフにしているユーザも弾かれてしまうことがあります。 そこで<noscript> タグを使って注意書きを併せておくと良いかもしれません。

を書き換える

 この手法を で利用する場合のの書き方の例を示します。

 未だに mt-comment.cgi を狙い撃ちしてくるボットも存在するので, ファイル名の変更は忘れずに行なってください。 合わせ技だからこそ効果的です。
 また「 中に丸見えなのはやっぱり不安だ」と仰るのであれば, 以下のように少し難解に書くこともできます。

の保護 '06/12/07追記

 pingの送信先URLも同じ方法で隠蔽することができますが, に関しては Trackback Auto Discovery 用のデータを解析していると推測されるため, あまり効果は期待できないかもしれません。 なぜなら,投稿用は form タグの action を取得すれば一発ですが, pingの送信先URLについては一定のフォーマットが存在しないためです。 そのため,URLを隠蔽するには,その唯一のフォーマットである Trackback Auto Discovery 用のデータをエントリ中に埋め込まないというのが有効打ということになります。

参考: spam TrackBack対策ならTrackBack auto-discoveryを消すに限る


この記事を読んだ人はこんな記事も読んでいます 記事リコメンデーションについて

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (匿名可/必須/公開)
 (匿名可/必須/非公開)
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 CAPTCHAについて を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。