GET /../
2008年11月15日(土曜日)
GET /../
公開: 2024年12月21日2時0分頃
yamagataさんのところから、「セルフチェック かんたん5 (プロアクティブ・ディフェンス) (yamagata.int21h.jp)」。
ふつうのブラウザから「../」入りのリクエストはできないはず、というお話ですね。
ブラウザを使わずに無理矢理送ることは可能ですが、IIS + ASP.NET の場合にはサーバ側で「../」を消化するような処理をされてしまうので、アプリケーションが「../」を含むURLを受け取ることはないようです。たとえば、
GET /foo/bar/../
を無理矢理送ったとき、アプリケーション側で Request.Url を見ても
/foo/
がリクエストされたようにしか見えません。bar/../ は最初から無かったことになります。では、
GET /../
のようにして外に出ようとするとどうなるかというと、IIS6はこんな感じのレスポンスを返します。
HTTP/1.1 403 Forbidden Content-Type: text/html Date: Sat, 15 Nov 2008 05:07:36 GMT Connection: close Content-Length: 32 <h1>Forbidden (Invalid URL)</h1>
うっ、やる気がまったく感じられない……。charsetパラメータも無いのが気になりますが、固定の値しか吐いていないのでたぶん大丈夫でしょう。IIS7だとこんな感じになりますね。
HTTP/1.1 403 Forbidden Content-Type: text/html; charset=us-ascii Server: Microsoft-HTTPAPI/2.0 Date: Sat, 15 Nov 2008 05:06:36 GMT Connection: close Content-Length: 312 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> <HTML><HEAD><TITLE>Forbidden</TITLE> <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> <BODY><h2>Forbidden URL</h2> <hr><p>HTTP Error 403. The request URL is forbidden.</p> </BODY></HTML>
charsetパラメータが気になりますが、固定の値しか吐いていないのでたぶん大丈夫でしょう。
いずれにしても、アプリケーションが受け取る前にはたき落とされてしまいます。
- 「GET /../」へのコメント (6件)