モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

URLの書かれていないスパムの謎とその対策

spam_filter.phpを導入されたと書かれていたWikiでスパム投稿を発見したので、どうやって抜けてきたのかを調べてみました。

http://kan.s151.xrea.com/

Keep working!where are you google? -- Saher1979 2007-06-06 (水) 02:14:33

コメントスパムでこんなのが入っていました。
ちなみに、URLのリンクや他の宣伝文などはなく、なんのためにこんなの書いてきてるの?という感じです。


そこで、「Saher1979」で検索してみました。
中田潤が無料予想 競馬で「喰えるダメ人間」になろう!: 阪神芝2000メートルの不思議
エンジェルハートプロダクション【☆+゜。関口春菜の日記☆+゜。】:ギャオ〜☆+ ゜。 - livedoor Blog(ブログ)#comments

このあたりがヒットしたのですが、ブログのコメントスパムが打たれていました。


で、コメントの内容はほとんど同じようなものなんですが、ブログの名前にはURLが書けるため、名前にはリンクが付いていました。
つまり、ロボットでURL欄があるなしにかかわらず打ってくるため、WikiのコメントではURLの情報が抜け落ちて、(スパムとしては)意味無い書き込みが残ってしまっていた、ということが真相のようです。


ちなみにリンク先は下記URL(頭の「h」はリンクにならないよう自分がはずしました)

ttp://www.sscnet.ucla.edu/history/yeager/classes/197W/wwwboard/messages/1239.html

になっていて、ドメインucla.edu(アメリカの著名な大学)になっています。
これは、最近流行の手法らしくて、権威のあるドメインだとSEO的に上に来るため、大学のサイト内にある(古くてあまりメンテされていない)掲示板やWikiに宣伝そのものやリンクを書いておくというものです。


例えば、「viagra buy」で検索してみると
buy viagra - Google 検索
自分が検索した時点では、一番上はミシガン大学内にあるブログのエントリーになっていて、そこから他のサイトに転送されるようになっていました。
その次は、日本のKDEPukiWikiのサイトが荒らされていて、そこのFAQのページでした。
FAQ/544 - PukiWiki


問題の掲示板の場合、本文と画像を貼れるようなのですが

<img src="thankyou" onerror='location="http://allyouneeds.info/search.php?q=viagra+online"'>

と存在しない画像を貼ってわざとエラーを起こし、そのエラー画面として飛ばす、という手法で自動的に自サイトへ誘導していました。


このように、あまりにスパムがひどいと、そのまま放置されて荒れ地となってしまう場合があったりして、スパマーとしては願ったりな状況になるようです。
特に現在は、自分でサーバを建てたりせずに、無料でブログとか掲示板、Wikiを簡単に設置出来るようになりましたので、そうやって無料で運営されているところだと、単に放棄して他へ移る、ということで荒れ地になる場合が多いように思います。
そうなると、デフォルトで簡単にスパム対策ができるというのは、検索精度やメールのスパム(URLBL除けのため、一旦そういった「安全そう」なURLを経由する、という手法が成り立つ)などネット全体のことを考えても、必要なことだと思います。


さて、この手のとばっちりによるスパム抜けの対策を考えてみました。
フォーム中の「name=url」で指定されてくるものにURLが書かれて送られて来ていると思います。
そこで、本来フォームに入っていないはずのものがあった場合には拒否する、ということでフィルタ出来るはずです。
まあ、PukiWikiの場合はurlという項目が入っているかだけでチェックしてもほぼOKでしょう。


これを利用して、フォームの名前で良く使われている、mailだとかurlだとかbodyだとかをやめて、頭になにか付ける、例えばhoge-mailだとかにしておき、そういうuniqな名前以外のフォーム名が書かれていたら破棄とすると、一部のスパム投稿についてはそれで落とせる可能性があるでしょう。


近いうちにspam_filter.phpに、こういう場合を防ぐためのフィルタを追記します。


(追記)

これはすごく簡単なんでさくっと書けたんですが、テストのほうがめんどい。

TOBY SOFTさんのところでspam_filter.php導入の紹介

[雑記] wikiスパム対処完了? (第一種臨界不測日記)
Wiki/PukiWiki/スパム(spam)を防止する方法 - TOBY SOFT wiki

で、TopPage - TOBY SOFT wikiへのspam_filter.php導入についての紹介をいただきました。
こちらのサイトはうちなんかよりもよっぽど検索上位にくるサイトなので、いろんな種類のWikiスパム攻撃を受けていらっしゃるため、ここへの対策を書くと事前に自分のところへの対策をしていることになって、攻撃を食らう前に防御が出来て、こちらとしてもとても助かってます。

トラックバックスパムのドメイン指定は、完全ではなく部分マッチして欲しい

〜.paro2.netからのトラックバックスパムがうざいので、ブラックリストドメインに入れたのだけど、完全一致でなければいけないみたいで弾いてくれない。
ここは、各エントリーごとにサブドメインを付けて売ってきているため、完全一致だといたちごっこだから、意味無いんだよね。
もうちょっと柔軟に設定できるようにさせて欲しい。


(追記)

paro2.netでぐぐられてるリファがあったんでみたら、うちとここのエントリーが出ていた。

ネットランダム - 〜.paro2.netからのトラックバックスパム撃退法

なんか連続でスパムがきたので、コマンドプロンプトでnslookupを打ち込み、スパムのドメインをみて見たら同じIPアドレスだった。
たまたま同じIPアドレスであれば、そんなにドメインを多く取得できるわけないので、そいつをトラックバック拒否に設定すればいい。

ああ、なるほど。それ正解。
というわけで「211.127.155.89」を拒否ドメインに入れてみたが、説明見るとドメインとしか書いてないんだよね。IPでもちゃんと拒否してくれるのかな?


(追記)

はてなダイアリー日記 - トラックバック拒否ドメインの指定を後方一致にしました

というわけで、現在はこのようなサブドメイン取ってスパム打ってくる奴らを簡単にフィルタできるようになりました。

Emacsでスペースの4タブにする設定

ちょっと前の話なんですが、[を] インデントにはタブではなくスペースを使うのエントリーを読んで、ああ確かにソース共有すること考えたらスペースでのタブにしたほうがいいよね、と思って設定したのですがうまくいかず。で、自分のEmacsやらいろいろな事の師匠にあたるhkobaさんに聞いたところ、このエントリーの記述がおかしいよん、という指摘でした。

'(cperl-indent-level 4) 
これは本来、 
(custom-set-variables 
'(cperl-indent-level 4) 
.... 
) 
だったと思われます。

'(...) をトップレベルに書いてしまうと、単なる定数式になりますから、何の作用も残さずに消えていく

ということで、これじゃダメなので、自分はこんな感じに設定することで、標準Perlスタイルのスペースタブに設定出来ました。

(add-hook 'cperl-mode-hook
          (lambda ()
            (setq indent-tabs-mode nil)
            (cperl-set-style "PerlStyle")))

Lispまともに勉強しなかったのがバレバレっす。