次の方法で共有


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>  

関連項目