<schemeSettings> 要素 (Uri 設定)
Uri が特定のスキームに解析される方法を指定します。
configuration
<uri>
<schemeSettings>
構文
<schemeSettings>
</schemeSettings>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
なし
子要素
要素 | 説明 |
---|---|
add | スキーム名のスキーム設定を追加します。 |
オフ | 既存のスキーム設定をすべてクリアします。 |
remove | スキーム名のスキーム設定を削除します。 |
親要素
要素 | 説明 |
---|---|
uri | .NET Framework での Uniform Resource Identifier (URI) を使用して表現された Web アドレスの処理方法を指定するための設定が含まれています。 |
解説
既定では、System.Uri クラスでは、パスの圧縮を実行する前に、パーセント エンコードされたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ メカニズムとして実装されました。
http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\
パーセント エンコードされた文字を正しく処理しないモジュールにこの URI が渡された場合、サーバーで次のコマンドが実行される可能性があります。
c:\Windows\System32\cmd.exe /c dir c:\
このため、System.Uri クラスでは、まずパス区切り記号のエスケープを解除し、次にパスの圧縮を適用します。 上の悪意のある URL を System.Uri クラスのコンストラクターに渡すと、次の URI が生成されます。
http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\
この既定の動作は、特定のスキームに対して schemeSettings 構成オプションを使用して、パーセント エンコードされたパス区切り記号のエスケープを解除しないように変更できます。
構成ファイル
この要素は、アプリケーション構成ファイルまたはマシン構成ファイル (Machine.config) で使用できます。
例
次の例では、http スキームに対して、エスケープしないパーセント エンコードされたパス区切り記号をサポートするために、Uri クラスで使用される構成を示しています。
<configuration>
<uri>
<schemeSettings>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>
</configuration>
要素情報
名前空間: System
関連項目
.NET