Uri が特定のスキーマに対して解析される方法を指定します。
<schemeSettings>
</schemeSettings>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
なし。
子要素
要素 |
説明 |
---|---|
スキーム名に対するスキーム設定を追加します。 |
|
既存のスキーム設定をすべて消去します。 |
|
スキーム名に対するスキーム設定を削除します。 |
親要素
要素 |
説明 |
---|---|
URI (Uniform Resource Identifier) で表現された Web アドレスが .NET Framework によってどのように処理されるかの設定を格納します。 |
解説
既定では、System.Uri クラスは、パスの圧縮を実行する前に、パーセント記号をエンコードしたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ機構として実装されました。
https://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 になります。
https://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.Configuration.SchemeSettingElement
System.Configuration.SchemeSettingElementCollection
System.Configuration.UriSection