トラックバックスパムの手口
トラックバックスパムはどうやっているんですかね?
検索サイトで検索するのかな?
そんなことはないですよね?1
trackbackモジュールを使うと、トラックバックURLとして表示されるアドレスの中に、trackbackって、入ってしまっているが、これを自由に変更できると対策の一環になるかな?
ノードに表示するときにURLを隠蔽できないモノですかね?
例えば、ボタンをクリックしたらURLが表示されるようになるとか。
CSSを使えば一応、見た目に隠すことはできますが、ソースレベルではしっかり記述されてしまうわけですから、意味をなさない可能性も大きいですからね。
javaスクリプトを使って、クリックされたらサーバーにアクセスしてURLを拾ってきて表示するとか?2
trackbackモジュールがtrackback pingを受信したら、そこへ見に行って、こちらのURLが存在するかどうかをチェックしてくれるような仕掛けがあればブラックリストと並ぶ対策にはなります。が、システム的な負荷は増えてしまいます。
だったら、トラックバックのURLそのものをわかりにくくする、もしくはトラックバックの存在そのものをわかりにくくするという対策を考える方がいいのかもしれません。
たとえばの話ですが、スパムがソースレベルで検索をして、トラックバックを受けているのかどうかを探っているのならURLの中に例えばコメントタグなんかを紛れ込ませたりすれば簡単には探り当てられないのではないか。
しかし、ディスプレイの向こう側でページを見て・・・と言うことになるとこの手は使えませんね。
う~ん。
スパムの手口が知りたいですね。
- 1. あったりするかも(^_^;)
- 2. jstoolsのactivemenuというメニューのモジュールですが、折りたたまれているメニューの行頭のボタンをクリックすると、折りたたまれている部分のメニュー情報を拾ってきて表示するようです。
おっと、amayadoriさんのサイトもトラックバック入ってましたか。では、テスト兼ねて言及を。(^^ トラックバックスパムの手口 セキュリティに関しては、「何から何を守るのか」がポイン
そうですね。本当に使いこなそうと思ったらやっぱりPHPとDrupalのシステムを知らないとなかなか難しいですね。
とりあえず、なんかチョチョいっと変更したことが出来たときなんかはささっと簡単にできないのが辛いですね(T.T)
Contemplate って、やっぱり技術力が必要でしたね。予想通りではあるのですが...
ダウンロードカウンタの時もですが、他のモジュールの使用に影響を与えるとはあまり考えていなかったので...Drupal の中のことをもう少し知らないとダメだな...と思いました。
今回、Trackback モジュールを弄り倒したのは、けっこう収穫ありましたけど...
スパムモジュールの有効性と、このサイトがどのくらい標的になるのかを体感しようと思って、オリジナルのモジュールと入れ替えました。
どれくらいのスパムがかかるのでしょうか(笑)
お楽しみに(ヲイ)
trackbackモジュール自体はCCKに対応しているらしいのだが、このサイトの何らかの問題でCCKに反応していなかったらしい。
0829@drupal.orgさんのところで、CCKにも対応しているはず…というコメントを頂いて、うーんと悩んでいたのだが、初心回帰で、モジュールオン/オフ。果てはファイルの入れ替えを経て、回復に至りました。
そんなわけで、原因はよくわからず。ファイルのどれかに破損でもあったのか?何かと干渉していたのか?…。よくわかりません…。
トラックバックが反応したので、次は、ConTemplateでカスタマイズしているCCKコンテンツの方ですね。トラックバックのURL表示部分も作らないと駄目かな…うーん。悩む(T.T)
ていうか、最近コンテンツを作ってませんね(^_^;)
トラックバックモジュールとスパムモジュールが連携できるようなので、入れてみる。
トラックバックはCCKに対応できないんですね・・・うーん、残念。
0829@drupal.orgさんのところでConTemplateで、トラックバックを使うための改造が紹介されていたけど、どうも上手くいかず・・・。
もしかしたら、CCKでは駄目なのかな?うーむ。
一番トラックバックを使いたいCCKで使えないのは何とも残念である・・・。
そう言えばzoracさんが、トラックバック元URLをチェックするための改造に関連したスレッドを紹介してくれた。
ちょっと、お勉強してみよう。
メールアドレスなんかではよく見ますね。後ろに関係のない文字列を付けて、その文字列を削除してくださいとか。
どうせだったら、その文字列をランダムにしたりとかすればより一層効果的かもしれないですね。
とりあえず、どれくらいスパムつくかなと思ってトラックバックモジュール実装中(笑)
もともとは違うんですけどね。
「他のユーザ(サーバ)からデータを参照しやすい」=「bot にもその利便性を与える」ということになってしまっているんでしょうね。残念ながら...
スクリプトの書き方次第で隠蔽できると思います。
サイトの URL(http://example.com)、トラックバック用の追加 URL(trackback)、ノード ID(xx) をスクリプト内で配列として、それをつなげて表示するようなコードを書けば URL としては表示されない状態にできるかな...と思います。
さらに、というのであれば、スクリプト部分だけ別ファイルにして呼び出すとか...
スクリプトで隠蔽まではしなくても、偽りの URL を表示させる方法でいいかな?と思ったので、trackback/xx-nospam という URL を表示して、「"-nospam" の部分を削除して送信してください」という方法に改変中です。
あとはスタイルを整えるだけなので、明日には Trackback が実装できるかな...と思います。
補足、ありがとうございます<(_ _)>
RDFはむしろ、スパム誘発のためにあると言っても過言ではないのですね(笑)
スパムがどんな手段で閲覧しているのか判らないですが、httpを叩く限りにおいてはHTMLソース化されたデータが送られてきますよね?そこには既にURLは記述されているのだと思いますが・・・思い違い?
ちなみに、前述のPHPコードのURLと検索文字列をhttp://drupal-jp.sourceforge.jp/main/node/**とhttp://drupal-jp.sourceforge.jp/main/trackback/**に変えて試してみた(スミマセン、手近にトラックバック付けてるところがなかったので<(_ _)>)ところ、無事検索できていましたので、スクリプトからでも十分URLは自動収集できます。
URLに含める文字列にtrackbackを使用しなければそれだけで効果はあるでしょう(て言うか、trackbackという単語を入れる方がスパム対策としてはナンセンスな気もする)。
私が試してみた「トラックバックモジュールが吐き出すトラックバックURLの中のtrackbackという単語の途中途中に
<!-- -->とか<span></span>タグを織り交ぜるだけでスクリプト収集対策には効果はあるような気がします。もちろん、知れ渡れば突破されるので、それこそ織り交ぜる位置をランダムに作り出すとか(笑)Captchaでやったので、ロジックはすぐできます。もちろん、スクリプトを使ってソース上からも隠蔽してしまえば尚強固だと思われますが、私にはスクリプトは無理です(;^_^A アセアセ…
ちなみにtrackback.moduleの278行目から以下のようにいじってみました(笑)
ソース上では間に
<span>...</span>が入っているので、正確に検索文字列に設定しないと引っかかりませんが、ブラウザ上はそのままコピーできます。後は、ランダムに織り交ぜる位置を変えればよいだけですけど・・・。
スクリプトによって隠蔽できれば、まあ、これもしなくても大丈夫かな・・・とかは思います。
Trackback には RDF の記述は必要ありません。
記述していない場合、トラックバック URL を入力しなくても、通常のページの URL を入力しているだけで自動的に トラックバック URL を探してきて、トラックバックを送信するという、自動トラックバック機能?が使えなくなるというだけです。
記述がなくても、トラックバック URL を使うことで、トラックバックの機能は問題なく利用できます。
また、スクリプトはブラウザで処理を行なうことで初めてブラウザ上に表示されるものなので、HTML のソースに含まれることは通常はないはずです。
スパム対策に Javascript を使って HTML ソースを隠蔽するという手法がとられていることが多いので、そのうち破られるのでしょうが、現時点では有効のようです。
私は、
1) RDF を削除する
2) URL をスクリプトで表示する
3) URL に trackback を含めない(または任意の文字列を URL に追加する)
などでの対応を考えています。比較的簡単にできそうな部分なので...
"http://drupal-j.com/blog/amayadori/184"に、"presented by JP-DATA.com"が存在するかというテストをしてみました。
こんな感じでチェックすることはできました。
これでどれくらい鯖に負荷がかかるのかですね。
自動的に実行されると負荷が相当かかりかねないと言うことならば、モデレーション画面に確認ボタンを付けて・・・というのも悪くないような気がしますね。
これだけでも、管理の負荷が減りますものね。
だから?なんだと言われると返す言葉もございませんけど・・・(^_^;)