web-dev-qa-db-ja.com

Apacheがコード200でhttp://www.google.comへのリクエストをログに記録するのはなぜですか?

最近、「access.logにこのような行が表示される原因は何ですか?」と尋ねられました。

59.56.109.181 --- [22/Feb/2010:16:03:35 -0800] "GET http://www.google.com/ HTTP/1.1" 200 295 "-" "Mozilla /5.0(互換性; MSIE 5.01; Win2000) "

私の当面の答えは、誰かが少し邪悪なことを探求しているということです。

だが:

  • どうやって?憶測...短いPerlまたはpythonスクリプトは簡単に接続して、無効なホストのURLを要求する可能性がありますが、投稿しないでください。良いワンライナーを知っているなら、私は好奇心旺盛です。今日はこのゴルフを検討してください:)
  • 脆弱性?これを行うときに誰かが何を探しているのか、何を学んだのか、そしてパッチを当てるべきですか?
  • 彼らが私の心を読まないようにするために、私はスズ箔の帽子が必要ですか?
  • そして私にとって本当の質問:それは200ではなく404応答であるべきではありません!?

これは標準のLAMPサーバー(Ubuntu)上にあります。

3
Paul

多分あなたは読みたいでしょう http://wiki.Apache.org/httpd/ProxyAbuse

特にこの点:「私のサーバーはプロキシしないように適切に構成されているのに、なぜApacheは200(成功)ステータスコードを返すのですか?」と質問します。「200ではなく404応答である必要がありますか?」

Apache confに問題がなければ、ルートページを送信するだけです。ステータスコードが200であるためです。

5
Fran tello

誰かがサーバーをプロキシとして使おうとすると、これが起こると思います。これにより、http:// ... URLが「通常」になります(通常のサーバー要求から予想されるパス部分だけではありません)。

200ステータスコードに関しては、それは...エラー..まあ、私のサーバーもそれを行います。 http:// hostname の部分を無視しているようで、残りのパスを使用してローカルサーバーから結果を返します。それが理にかなっている理由を理解するには、おそらくRFCを掘り下げる必要があります。答えはわかりません。

4
sfink