- 2008-05-16 金 19:47:32
- 今日の基礎体力
PHPの基礎体力をフルPHPに移行して1ヶ月。
メジャーな検索エンジンはコンテンツをほぼインデックスしてくれたので
301でリダイレクトしていたアクセスを404 NotFound に切り替えました。
この1ヶ月のアクセス解析で気づいたことですが
およそ1/3がスパム投稿や攻撃などのいらんアクセス。
これが無くなれば不要なトラフィックも減って
普通のユーザが快適に利用できるのにな~と思う。
いらんアクセスとはこんなの。
1.スパム投稿(コメント、TB)
2.目的不明・正体不明のクローラ(もしくはDDoS攻撃)
3.アプリケーションの脆弱性を突く攻撃
アクセスをはじくには、次のような値を組み合わせ
ブラックリストやホワイトリストとつきあわせて選別すればいい。
$_SERVER['HTTP_USER_AGENT']
ユーザーエージェント(ブラウザの情報)は
簡単に偽装できるので気休め程度。
$_SERVER['REMORT_ADDR']
間違いなく「いらないリモートホスト」と判断できる場合は
IPアドレスのブラックリストではじけばいい。
念のため逆引きしてみて、メジャーなプロバイダや
リモートホストで無いことを確かめてからリストにすべき。
$_SERVER['REQUEST_METHOD']
リクエストメソッドには、GET,POST,HEADなどがある。
フォームを送信する時はPOSTだけどこれだけでは
スパムと判断できないので $_POST
の内容とあわせて判断する。
$_SERVER['REQUEST_URI']
誘導するURLや、相対パス、
PHP・Javapcriptなどのコードを含んだリクエストURL。
攻撃的なリクエストのパターンを作って比較する。
まあ、アクセスをはじくコードはいろんなところで
お目にかかれると思うので省きますが、
いらんリクエスト自体を減らす方法がないものか試行錯誤中です。
基本的には 404 を返してます。
NotFound のページを返すのももったいないので本文は無し。
やられてるだけでは悔しいので反撃も考えてみました。
リクエストをそのままリモートホストに301でにリダイレクト。
でも、間違ってうちが攻撃的なサイトと
判断されてはかなわないのですぐに止めました。
500を返すとどうだろうと思ったりもしますが
マナーも礼儀も無いリモートホストなので
何を返しても結局同じかもしれません。
落ち着いたら少し試してみます。
まあ、トラフィックが減ったので
404のページ(本文)を返さないのは良い選択でした。
もっと早く気づけってとこですけど。
- 新しい: キーワードを含む行を一覧表示するMocascript
- 古い: @演算子のパフォーマンス
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://beatnik.jp/blog/archives/25/trackback
- トラックバックの送信元リスト
- いらんアクセス対策考 - PHPで翻訳三昧 より