#1490 ブログのスパム対策
- 日本語じゃないのはスパムだ ex. かな文字/[あ-んア-ン]/
- ASCIIだけのはスパムだ
- バックリンクのないトラックバックはスパムだ
- url がやたらと多いのはスパムだ ex. 5個以上でアウト
- html タグを含むのはスパムだ ex.
<a href=
- BBCode を含むのはスパムだ ex.
[url
当サイトに来るスパムも全く同様の傾向があった。ただ、これらの対策は本文をいちいちチェックしなければならないので、スパムを連射された時に負荷がかかってしまう。
hail2u.net - Weblog - コメント・スパム対策いろいろ で紹介されている手法のいくつかがとても参考になる。
【極めて有効】
- JavaScript でフォームを書き出す
- mt-comments.cgi をリネーム (書き込み系のCGI は URL を変えられるように設計する)
- hidden でパラメータを渡してチェック (1234 のような適当な文字で十分効果有り)
- HTTP_ACCEPT_LANGUAGE をチェック (ja が設定されているかどうか)
【一長一短】
- 本文のURLの数をチェック
- URLのチェック
- URLと本文の比較
- プレビューチェック
- 指定した文字列を入力チェック
- ひらがなチェック
- アスキーチェック
- HTTP_ACCEPT_ENCODINGをチェック
【意味なさそう・下策】
- IPチェック
- リファラチェック
- HTTP_FORWARDEDをチェック
- 画像で指定した文字列を入力チェック (CAPTCHA 個人ブログでやるのは過剰防衛)
【極めて有効】の 1. 2. 3. を見て、「スパマーをバカにしすぎじゃないか」と思われる向きもあるかもしれないが、実際に攻撃を受けた人なら知っている通り、スパマーは信じられないほどバカだ。ここで言うバカは「反社会性に対する罵倒」ではなく、「ゲリラ広告の手法として稚拙」という意味である。その点で言えば、メールの日本語スパムはいろいろと知恵を絞っている。
スパマーは 一度取得した投稿フォームを繰り返し使う。 しかも、取得の方法はプログラムによる自動巡回 である。「投稿フォームをいちいち取得→解析→投稿」という面倒なことをスパマーはしない。
「荒らし」(ピンポイント攻撃)と「スパム」(絨毯爆撃)は似て非なるもので、両者の対策を混同しないようにしたい。「スパム対策」の要諦はいかに手を抜くかである。
ブログのスパム対策の基本方針は
投稿フォーム(URL)をスパマーに発見・取得されないこと。
であり、もし、スパマーに投稿フォームを発見された時は書き込みスクリプトを速やかに改名することが大切である。
単に Trackback Auto Discovery の設定を消してしまうだけ。
各記事ページにある Trackback Auto Discovery の記述を消せばOK。
これは Trackback-URL をスパマーに見つかりにくくする方法で、上記のコメントスパム対策と同じ効果がある。「スパムを劇的に減らす」というのは本当である。
Trackback Auto Discovery は送信元のブログに Trackback-URL を知らせるために、HTMLのコメントとして RDF(XML) を埋め込むという仕様になっている。ソースが汚くなる上に、最近では「トラックバックスパムを送ってください」と自ら宣伝しているようなものでデメリットの方が大きい。
【追記 2007.01.19】
フォーム内にユーザーには見えない隠し項目(但し、Type=Hiddenではない)を設定し、nameをロボットが間違えやすい"email"のような名称にするだけ。
<input type="text" name="email" style="display:none">
これでアホなロボットは人間サマには見えないemail欄にテキトーなメールアドレスを埋め込んで投稿してくるので、CGI等のサーバープログラム側でemail欄に何か入っていれば捨てる、という処理をすればよいとか。
良さそうなアイディア!