次の方法で共有


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

既存のスキーム設定をすべてクリアします。

configuration
  <uri>
    <schemeSettings>
      <clear>

構文

<clear/>  

属性および要素

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

属性

なし。

子要素

なし。

親要素

要素 説明
<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) で使用できます。

次の例では、すべてのスキーム設定をクリアしてから、http スキームに対して、エスケープしないパーセント エンコードされたパス区切り記号のサポートを追加する Uri クラスで使用される構成を示します。

<configuration>  
  <uri>  
    <schemeSettings>  
      <clear/>  
      <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>  
    </schemeSettings>  
  </uri>  
</configuration>  

関連項目