次の方法で共有


schemeSettings の <remove> 要素 (Uri 設定)

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

<remove 
   <name = "http|https"/>
/>

属性および要素

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

属性

属性

説明

name

この設定を適用するスキーム名。 サポートされている値は、name="http" と name="https" だけです。

子要素

なし。

親要素

要素

説明

<schemeSettings>

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

解説

既定では、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>
      <remove name="http"/>
    </schemeSettings>
  </uri>
</configuration>

参照

参照

ネットワーク設定スキーマ

System.Configuration.SchemeSettingElement

System.Configuration.SchemeSettingElementCollection

System.Configuration.UriSection

UriSection.SchemeSettings

System.GenericUriParserOptions

System.Uri