水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 不正な Referer 対策

不正な Referer 対策

2003年5月8日(木曜日)

不正な Referer 対策

というわけで不正な Referer 対策。

ASP.NET では、Referer の値は System.Web.HttpRequest 型の Request というオブジェクトの UrlReferer プロパティにアクセスすることで得られます。プロパティの値は System.Uri 型です。つまり、Referer の値は ASP.NET の内部処理によっていったん System.Uri 型の値に変換されているわけです。

この変換は結構良くできていて、頭にスキームがなければ相対 URI とみなされるし、Referer に空白が含まれているような場合でも、勝手に %20 に変換してくれます。たいていの場合は何とかなるのですが、問題のケースでは括弧書きの中に URL が入っているのがまずいのか、Request.UrlReferrer の値を参照しようとした瞬間に System.UriFormatException が発生します。ToString() メソッドを呼ぼうとしても駄目ですし、null と比較しようとしただけでも駄目です。

しようがないので UrlReferer プロパティは封印して、代わりに Request.Headers["Referer"] で取得することに。これで何とかなる……といいなぁ。

関連する話題: プログラミング / C# / ASP.NET / hatomaru.dll

最近の日記

関わった本など