水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > Refererの書式

Refererの書式

2003年5月8日(木曜日)

Refererの書式

こういうアクセスログが。

2003-05-08 00:00:53 219.96.196.58 - 211.16.234.154 80 GET /bakera/hatomaru.aspx - 500 Mozilla/5.0+(Windows;+U;+Win98;+en-US;+rv:1.2b)+Gecko/20021016+Sylera/1.1.10 Field+blocked+by+Outpost+(http://www.agnitum.com)

500 Internal Server Error が発生しています。何で? と思ってよく見ると、"Referer: Field blocked by Outpost (http://www.agnitum.com)" というフィールドが送出されています。Referer に URI じゃないものを入れているなんて聞いたことがありません。RFC2616 を見て確認してみると、Referer の書式はこうなっています。

Referer = "Referer" ":" ( absoluteURI | relativeURI )

以上、RFC2616 14.36 Referer より

Referer の値として指定できるのは絶対 URI あるいは相対 URI のみです。URI の後ろにコメントを書くことも出来ません。……というか、"(" と ")" は URI に使える文字なので、単純に URI の一部とみなされるでしょう。

※ちなみに "absoluteURI" の書式は RFC2616 では定義されておらず、RFC2396 を参照しています。つまり、ここでの "absoluteURI" "relativeURI" は RFC2396 の "absoluteURI" "relativeURI" であり、それらは絶対 URI および相対 URI の書式そのものです。

"Field blocked by Outpost (http://www.agnitum.com)" という文字列には URI に使用できない ASCII SPACE が思いっきり含まれていますから、URI として不正です。

このことから得られた教訓 : Agnitum: Taking care of your security (www.agnitum.com) で紹介されている Outpost とかいうソフトウェアは RFC2616 の仕様を満たしていません。イントラネットなどの閉じられたネットワークで使うならともかく、これでインターネットにアクセスすることはちょっとオススメできません。

※まあ rfc-ignorant.org (www.rfc-ignorant.org) ではないので、RFC に反していると言うだけでアクセス拒否したりはしませんが。

しかし、RFC 違反の Referer を送出されたというだけで 500 になってしまうというのもそれはそれでショボイと思うので、何とかしたいですね……。

関連する話題: Web / http / サーバ / altba.com / hatomaru.dll

最近の日記

関わった本など