XmlSecureResolver XmlSecureResolver XmlSecureResolver XmlSecureResolver Class

定義

XmlResolver オブジェクトをラップし、基になっている XmlResolver がアクセスできるリソースを制限することによって、XmlResolver の別の実装のセキュリティ保護を支援します。Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

public ref class XmlSecureResolver : System::Xml::XmlResolver
public class XmlSecureResolver : System.Xml.XmlResolver
type XmlSecureResolver = class
    inherit XmlResolver
Public Class XmlSecureResolver
Inherits XmlResolver
継承
XmlSecureResolverXmlSecureResolverXmlSecureResolverXmlSecureResolver

注釈

XmlUrlResolver クラスは、System.Xml 名前空間内のクラスすべての既定のリゾルバーです。The XmlUrlResolver class is the default resolver for all classes in the System.Xml namespace. これは、XML ドキュメントを読み込み、エンティティ、Dtd、スキーマなどの外部リソース、およびインポートディレクティブやインクルードディレクティブを解決するために使用されます。It is used to load XML documents and to resolve external resources such as entities, DTDs or schemas, and import or include directives.

使用するオブジェクトを指定することでXmlResolver 、この既定値をオーバーライドできます。You can override this default by specifying the XmlResolver object to use. たとえば、基になるXmlResolverがアクセスできるリソースを制限する場合は、 XmlSecureResolverオブジェクトを使用できます。For example, if you want to restrict the resources that the underlying XmlResolver can access, you can use an XmlSecureResolver object.

XmlSecureResolverXmlResolver具象実装をラップし、基になるXmlResolverがアクセスできるリソースを制限します。XmlSecureResolver wraps around a concrete implementation of XmlResolver and restricts the resources that the underlying XmlResolver has access to. たとえば、にXmlSecureResolverは、埋め込み Uniform Resource Identifier (URI) 参照から発生するクロスドメインリダイレクトを禁止する機能があります。For example, XmlSecureResolver has the ability to prohibit cross-domain redirection, which occurs from an embedded Uniform Resource Identifier (URI) reference.

XmlSecureResolverオブジェクトを構築するときは、URL、証拠XmlResolverオブジェクトのインスタンス、またはによってXmlSecureResolver使用されるセキュリティを決定するために使用されるアクセス許可セットと共に、有効な実装を提供します。When you construct an XmlSecureResolver object, you provide a valid XmlResolver implementation along with a URL, an instance of an evidence object, or a permission set, which is used by the XmlSecureResolver to determine security. が生成されるか、既存のがPermissionSet.PermitOnly使用され、基になるXmlResolverをセキュリティで保護するために呼び出されます。 System.Security.PermissionSetEither a System.Security.PermissionSet is generated or the existing one is used and PermissionSet.PermitOnly is called on it to help secure the underlying XmlResolver.

重要

XmlSecureResolver オブジェクトはユーザー資格情報など、重要な情報を含むことがあります。XmlSecureResolver objects can contain sensitive information such as user credentials. オブジェクトをキャッシュXmlSecureResolverする際には注意が必要でありXmlSecureResolver 、オブジェクトを信頼できないコンポーネントに渡さないようにしてください。You should be careful when caching XmlSecureResolver objects and should not pass the XmlSecureResolver object to an untrusted component.

重要

.NET Framework 共通言語ランタイム (CLR) で実行されるコードと、Microsoft SQL Server 2005 に統合されている CLR で実行されるコードのセキュリティインフラストラクチャには相違点があります。There are differences in the security infrastructure for code running on the .NET Framework common language runtime (CLR) and for code running on the CLR that is integrated within Microsoft SQL Server 2005. これにより、.NET Framework CLR 用に開発されたコードが、SQL Server 統合 CLR で使用される場合とは動作が異なる場合があります。This can lead to cases where code developed for the .NET Framework CLR operates differently when used on the SQL Server integrated CLR. これらの相違点の 1 XmlSecureResolverつは、URL に基づく証拠がある場合 (つまり、 CreateEvidenceForUrl(String)メソッドまたはXmlSecureResolverコンストラクターを使用する場合) に、クラスに影響します。One of these differences affects the XmlSecureResolver class when you have evidence that is based on a URL (that is, when you use the CreateEvidenceForUrl(String) method or the XmlSecureResolver constructor). SQL Server 統合 CLR のポリシー解決機構では、またはUrl Zoneの情報は使用されません。The policy resolution mechanism of the SQL Server integrated CLR does not use the Url or Zone information. 代わりに、アセンブリが読み込まれるときにサーバーによって追加された GUID に基づいてアクセス許可が付与されます。Instead, it grants permissions based on the GUID that the server adds when assemblies are loaded. SQL Server 統合 CLR XmlSecureResolverでを使用する場合は、指定さPermissionSetれたを使用して必要な証拠を直接指定します。When you use the XmlSecureResolver in the SQL Server integrated CLR, provide any required evidence directly by using a specified PermissionSet.

セキュリティで保護された競合回避モジュールを使用するにはTo use a secure resolver

  1. 正しいアクセス許可セットを持つ XmlSecureResolver オブジェクトを作成します。Create an XmlSecureResolver with the correct permission set.

  2. XmlReaderSettings オブジェクトを使用する XmlSecureResolver オブジェクトを作成します。Create an XmlReaderSettings object that uses the XmlSecureResolver object.

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. オブジェクトを作成するCreate XmlReaderSettingsときに、オブジェクトをメソッドに渡します。 XmlReaderPass the XmlReaderSettings object to the Create method when you're creating the XmlReader object.

    XmlReader reader = XmlReader.Create("books.xml", settings);
    
    Dim reader As XmlReader = XmlReader.Create("books.xml", settings)   
    

URL を使用してアクセスを制限するにはTo restrict access by using a URL

コンストラクターを使用して、 XmlSecureResolverローカルイントラネットサイトへのアクセスのみを許可するオブジェクトを作成します。 XmlSecureResolver(XmlResolver, String)Use the XmlSecureResolver(XmlResolver, String) constructor to create an XmlSecureResolver object that is allowed to access your local intranet site only.

XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/") 

アクセス許可セットを使用してアクセスを制限するにはTo restrict access by using a permission set

  1. WebPermission オブジェクトを作成します。Create a WebPermission object.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. アクセスを許可する Url を指定します。Specify the URLs that you want to allow access to.

    myWebPermission.AddPermission(NetworkAccess.Connect,"http://www.contoso.com/");
    myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
    
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/")
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
    
  3. PermissionSet オブジェクトに Web アクセス許可を追加します。Add the web permissions to the PermissionSet object.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. コンストラクターを使用して、 XmlSecureResolverアクセス許可セットを使用してオブジェクトを作成します。 XmlSecureResolver(XmlResolver, PermissionSet)Use the XmlSecureResolver(XmlResolver, PermissionSet) constructor to create an XmlSecureResolver object by using the permission set.

    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
    
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
    

    別のXmlSecureResolver例については、参照ページを参照してください。See the XmlSecureResolver reference page for another example.

証拠を使用してアクセスを制限するにはTo restrict access by using evidence

XmlSecureResolver(XmlResolver, Evidence)コンストラクターを使用し、を指定Evidenceすることで、アクセスを制限できます。You can restrict access by using the XmlSecureResolver(XmlResolver, Evidence) constructor and specifying Evidence. 基になる Evidence に適用される PermissionSet の作成には、XmlResolver を使用します。The Evidence is used to create the PermissionSet that is applied to the underlying XmlResolver. XmlSecureResolver はリソースを開く前に、作成された PermitOnlyPermissionSet 呼び出します。The XmlSecureResolver calls PermitOnly on the created PermissionSet before opening any resources.

ここでは、一般的なシナリオと、それぞれに提供する証拠の種類について説明します。Here are some common scenarios and the type of evidence to provide for each:

  • 完全に信頼された環境で作業している場合は、アセンブリを使用して証拠を作成します。If you are working in a fully trusted environment, use your assembly to create the evidence:

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 信頼性の低い環境で作業している場合は、外部ソースからのコードまたはデータがあり、外部ソースの出所と検証可能な URI があることがわかっている場合は、URI を使用して証拠を作成します。If you are working in a semi-trusted environment, you have code or data coming from an outside source, and you know the origin of the outside source and have a verifiable URI, use the URI to create the evidence:

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 信頼性の低い環境で作業していて、外部ソースからのコードまたはデータがあるが、外部ソースの出所がわからない場合は、次のいずれかの方法を使用します。If you are working in a semi-trusted environment and you have code or data coming from an outside source, but you don't know the origin of the outside source, either:

    evidence パラメーターを null に設定します。Set the evidence parameter to null. これは、リソースへのアクセスを禁止します。This allows no access to resources.

    - または --or-

    アプリケーションでリソースへのアクセスが必要な場合は、呼び出し元に証拠を要求します。If your application requires some access to resources, request evidence from the caller.

セキュリティで保護された競合回避モジュールを使用して XSLT スタイルシートを読み込むにはTo use the secure resolver to load an XSLT style sheet

  1. 正しいアクセス許可セットを持つ XmlSecureResolver オブジェクトを作成します。Create an XmlSecureResolver with the correct permission set.

  2. XmlSecureResolverLoad メソッドに渡します。Pass the XmlSecureResolver to the Load method.

    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("http://serverName/data/xsl/sort.xsl", null, myResolver);
    
    Dim xslt As New XslCompiledTransform()
    xslt.Load("http://serverName/data/xsl/sort.xsl", Nothing, myResolver)
    

注意 (継承者)

このクラスには継承要求があります。This class has an inheritance demand. クラスを継承するには、 XmlSecureResolver完全信頼が必要です。Full trust is required to inherit from the XmlSecureResolver class.

コンストラクター

XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence)

XmlSecureResolverXmlResolver を指定して、Evidence クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlSecureResolver class with the XmlResolver and Evidence specified.

XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet)

XmlSecureResolverXmlResolver を指定して、PermissionSet クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlSecureResolver class with the XmlResolver and PermissionSet specified.

XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String)

XmlSecureResolver と URL を指定して、XmlResolver クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlSecureResolver class with the XmlResolver and URL provided.

プロパティ

Credentials Credentials Credentials Credentials

Web 要求を認証するために使用する資格情報を設定します。Sets credentials used to authenticate web requests.

メソッド

CreateEvidenceForUrl(String) CreateEvidenceForUrl(String) CreateEvidenceForUrl(String) CreateEvidenceForUrl(String)

指定した URL を使用して、エビデンスを作成します。Creates evidence using the supplied URL.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type)

URI を実際のリソースを格納しているオブジェクトにマップします。Maps a URI to an object that contains the actual resource. このメソッドは、基になる PermissionSetGetEntity を呼び出す前に PermitOnly() を呼び出すことで、コンストラクターで作成された XmlResolver を一時的に設定してリソースを開きます。This method temporarily sets the PermissionSet created in the constructor by calling PermitOnly() before calling GetEntity on the underlying XmlResolver to open the resource.

GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type)

URI を実際のリソースを格納しているオブジェクトに非同期にマップします。Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String)

基になる XmlResolverResolveUri を呼び出して、ベース URI と相対 URI から絶対 URI を解決します。Resolves the absolute URI from the base and relative URIs by calling ResolveUri on the underlying XmlResolver.

SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type)

リゾルバーが Stream 以外の型を返せるようにします。Enables the resolver to return types other than Stream.

(Inherited from XmlResolver)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象