次の方法で共有


<schemeSettings> 要素 (Uri 設定)

Uri が特定のスキーマに対して解析される方法を指定します。

<schemeSettings> 
</schemeSettings>

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

なし。

子要素

要素

説明

<add>

スキーム名に対するスキーム設定を追加します。

<clear>

既存のスキーム設定をすべて消去します。

<remove>

スキーム名に対するスキーム設定を削除します。

親要素

要素

説明

<uri>

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

UriSection.SchemeSettings

System.GenericUriParserOptions

System.Uri