次の方法で共有


<schemeSettings> 要素 (Uri 設定)

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

configuration
  <uri>
    <schemeSettings>

構文

<schemeSettings>
</schemeSettings>  

属性および要素

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

属性

なし

子要素

要素 説明
add スキーム名のスキーム設定を追加します。
オフ 既存のスキーム設定をすべてクリアします。
remove スキーム名のスキーム設定を削除します。

親要素

要素 説明
uri .NET Framework での Uniform Resource Identifier (URI) を使用して表現された Web アドレスの処理方法を指定するための設定が含まれています。

解説

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

要素情報

名前空間: System

関連項目