schemeSettings の <clear> 要素 (Uri 設定)
既存のスキーム設定をすべてクリアします。
configuration
<uri>
<schemeSettings>
<clear>
構文
<clear/>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
なし。
子要素
なし。
親要素
要素 | 説明 |
---|---|
<schemeSettings> 要素 (Uri 設定) | Uri が特定のスキームに解析される方法を指定します。 |
解説
既定では、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>
<clear/>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>
</configuration>
関連項目
.NET