ホーム > 今日の基礎体力

今日の基礎体力のアーカイブ

リファラスパムでトラフィック汚し

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

記事を増やす余裕も無くほぼ放置状態のホームページですが
微妙にアクセスが増えてるのに気づきました。
要因を探ってみると新しいリファラが増えてました。

どんな感じでリンクされてんだろうと
リファラを辿ってみるとリンクが無いんだ。

なんだこれ???

で、アクセス元のホストを追跡してみると
異なるリファラを持った同じホストからのアクセスってとこに行き着きました。
これが噂に聞いた『リファラスパム』ってやつですね。

リファラは、URLそのままだったり、ショートURLだったり、
その先は、個人のブログや企業のホームページだったり、
情報商材やアフィリエイトといった類のもの。

アフィリエイト大いに結構だけど
意味のないトラフィックを増やして公共の利益を削って
お金を稼ぐなんざ間違っても仕事とは言わないから。
意味のないトラフィックを増やす意味でトラフィックチェンジも同類。

人に喜んでもらえる仕事をして
お金をもらうほうがやりがいも魅力もあると思うよ。

攻撃的(?)なリクエストのサンプル

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

いつもと毛色の違う攻撃的(?)なリクエストが・・・。
これだけでたいした悪さの出来るものではないところがいつもと違います。

脆弱性をテストするサンプルか!

スーパーグローバル変数 $_GET$_POST$_COOKIE$_SERVER['HTTP_*']
$_SERVER['REQUEST_URI'] あたりで得られる値をそのまま使ってると
なにか動作するものと推測出来ます。
クライアントから来る値を信用してはいけない。っていうわかりやすい見本です。
こういうのがあるので以下の2点は必ずやりましょう。

1.プログラムで使用する前に、想定内の値かどうか確認する。(バリデーション)
2.HTMLとして整形時に無効化する。(サニタイジング)

ちなみにこのリクエストは、
アプリケーションのバリデーションに引っかかったのではなく
こちらのフィルタにかかって、即ハネられたものです。
攻撃的?なリクエストをフィルタリングしてみる

設計段階でクライアントから受け取る値(文字)に制限を設けておけば
未知の攻撃に対してもこうした予防措置をとることが出来ます。

それにしても http://www.puritysearch.net/ は
うちのサイトの脆弱性テストでもしてるのでしょうか。
レポート(Japanese only)、気長にお待ちしてます。

掲示板スパムを5秒でノックアウト

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

昨夜 Spamp の Bata5 をアップしたばかりだけど、気づいてしまったのだ。

掲示板(コメント)スパムボットには
フォームのリクエストから投稿があるまで
大抵1~3秒、長いものでも4秒までという投稿パターンがある。

これを応用して Spamp の セッション判定では
例えセッションが成立してても、あらかじめ設定した「待ち時間」を
経過しない投稿はスパムと判定しているんだけど、
掲示板スパムボットがCookieを送受することを逆手にとって
Cookieにも「待ち時間」を適用できるってことに気づいてしまったのだ。

フォームのリクエスト時にCookie送信。
この時 Cookieには タイムスタンプ を記録。

投稿のあった際、Cookie のタイムスタンプと現在時刻を比較し
待ち時間が経過してなければスパムと判定。

5秒あればスパムをフィルタリングできてしまいます。
これならSpampを使わずともいろんな掲示板に応用できる。
PHPに限らないし、改造もメチャ簡単。
フォームがあるものなら掲示板スパム・コメントスパムに限らずいけます。

SpampではCookieの整合性チェックもやってるので
もしタイムスタンプが改ざんされてもスパムと判定出来ます。
Cookieがなければスルーしてるけど
次はセッションの方でスパムを判定できます。

取り急ぎ、この判定コードを4行書き足してっと、アップし直しました。
Cookie、Javascript、Sessionに依存しないのが特徴。
掲示板スパム対策 ライブラリ Spamp Bata 5.1

掲示板スパムボット報告 – AHoo+C

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

掲示板スパムボット対策に新しいフィルターを試してます。
が、設置3日で不覚にも突破されました。
原因は、isSpam() が全く反対の判定結果を返してました。
こういうのがあるから先にテストケースを書くべきなんですね。

それにしても、設置から丸3日間は
投稿フォームを収集しに来た形跡が無かったことを考えると、
スパム投稿を防げることに加え、リクエストすら来なくなるので
Javascript等で投稿フォームを隠しておくことが
どれほど有効なのか良くわかります。

こんな対策を施してます:
JavaScript でスパム投稿対策
積極的なスパム投稿対策

ひさしぶりのスパム投稿なのでこの機会に
AHoo+C(勝手に命名)という掲示板スパムボットが
どんなやつなのかプロフィールをご紹介します。
続きを読む

掲示板スパムのリクエストを75%カット

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

JavaScript でスパム投稿対策 でやってるダミーのURLを
http://127.0.0.1/ にしてみてはどうかと思ったものの
違うホストに飛ばした時のリスクが読めなかったので、
試しにココのサーバに掲示板スパムの受け口を設け
PHPの基礎体力掲示板からのスパム投稿を待ってたところ
実施して5日間、みごとに1件も投稿がありませんでした。

掲示板スパムボットは、違うホストに投稿してこない(仮説)

これなら ダミーのURLを http://127.0.0.1/ にしても
他に迷惑をかける心配はありません。

AHoo+C と名づけてたスパムボットは
1回のフォームの収集につき3回ほど投稿してきてたので、
こいつのリクエストを約75%カット、投稿も0件です。

ここしばらく、掲示板スパムのリクエストそのものを減らすことを
テーマにやってきて、実を結んだのを少し感じられました。

投稿フォームと投稿先のURLを隠しておく方法やAHoo+C の特徴などは
積極的なスパム投稿対策 にまとめてあります。

他に踏絵方式のホワイトリストによるフィルタリングを試験中ですが
これが出来上がれば掲示板スパムボットは100%撃沈です。

私は掲示板を認証制にしたくない。
敷居の低いパブリックな掲示板がやっぱり好きなんです。

1ページ100KBまで

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

ひと昔前は、画像やCSS、JSなど付随するファイルを含め
1ページのサイズは100KBまでというのが、ユーザを待たせない
トラフィック量の目安だったような気がします。

今はコンピュータの性能が各段に上がり気にしてませんでしたが
クライアントのデバッグツールのトラフィック量を見て
prototype.js が100KBあることにこの度気づきました。
最新バージョンだと 126KB あります。

PHPの基礎体力では prototype.js を除いた1ページの合計が
30KB~70KB くらいなので相当なウエイトを占めてることになります。
prototype.js を使ってないページでも呼んでいたので
これを外したところ描写が早くなったのを体感できました。
掲示板以外のページはサクサクです。

不要なページで読むなよってとこですけど、
時々やってるPHPスクリプトのパフォーマンス最適化よりも
ユーザ目線での見直し方が結果が顕著で
パフォーマンスに直結するんだとあらためて思いました。
jquery.js(55.9KB)への乗り換えも前向きに考えよ。
1ページ100KBまでというのは今も生きてると思いました。

1 2 3 4

ホーム > 今日の基礎体力

Ad
Apache
MySQL
PHP
お気に入り
ん。。。。。。広告
アーカイブ
Ad

ページの上部に戻る