schemeSettings の <remove> 要素 (Uri 設定)
スキーム名のスキーム設定を削除します。
configuration
<uri>
<schemeSettings>
<remove>
構文
<remove
name="http|https"
/>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
属性 | 説明 |
---|---|
name | この設定を適用するスキーム名。 サポートされている値は、name="http" と name="https" だけです。 |
子要素
なし。
親要素
要素 | 説明 |
---|---|
<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) で使用できます。
例
次の例は、Uri クラスで使用され、http スキームのスキーム設定をすべて削除する構成を示しています。
<configuration>
<uri>
<schemeSettings>
<remove name="http"/>
</schemeSettings>
</uri>
</configuration>
関連項目
.NET