XmlSecureResolver XmlSecureResolver XmlSecureResolver XmlSecureResolver Class

Definition

Schützt eine andere Implementierung von XmlResolver, indem das XmlResolver-Objekt umschlossen wird und der Zugriff auf die Ressourcen beschränkt wird, auf die der zugrunde liegende XmlResolver Zugriff hat.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
Vererbung
XmlSecureResolverXmlSecureResolverXmlSecureResolverXmlSecureResolver

Hinweise

Die XmlUrlResolver-Klasse wird als Standard zum Auflösen für alle Klassen im System.Xml-Namespace verwendet.The XmlUrlResolver class is the default resolver for all classes in the System.Xml namespace. Sie wird zum Laden von XML-Dokumenten und zum Auflösen externer Ressourcen wie Entitäten, DTDs oder Schemas und importieren oder einschließen von Direktiven verwendet.It is used to load XML documents and to resolve external resources such as entities, DTDs or schemas, and import or include directives.

Sie können diesen Standardwert überschreiben, XmlResolver indem Sie das zu verwendende-Objekt angeben.You can override this default by specifying the XmlResolver object to use. Wenn Sie z. b. die Ressourcen einschränken möchten, auf die XmlResolver der zugrunde liegende zugreifen kann, können XmlSecureResolver Sie ein-Objekt verwenden.For example, if you want to restrict the resources that the underlying XmlResolver can access, you can use an XmlSecureResolver object.

XmlSecureResolverumschließt eine konkrete Implementierung von XmlResolver und schränkt die Ressourcen ein, auf XmlResolver die der zugrunde liegende Zugriff hat.XmlSecureResolver wraps around a concrete implementation of XmlResolver and restricts the resources that the underlying XmlResolver has access to. Beispielsweise XmlSecureResolver ist in der Lage, die Domänen übergreifende Umleitung zu verhindern, die von einem eingebetteten Uniform Resource Identifier (URI)-Verweis erfolgt.For example, XmlSecureResolver has the ability to prohibit cross-domain redirection, which occurs from an embedded Uniform Resource Identifier (URI) reference.

Wenn Sie ein XmlSecureResolver Objekt erstellen, stellen Sie eine gültige XmlResolver Implementierung zusammen mit einer URL, einer Instanz eines Beweis Objekts oder einem Berechtigungs Satz bereit, der vom zum Bestimmen der XmlSecureResolver Sicherheit verwendet wird.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. Entweder wird System.Security.PermissionSet eine generiert, oder die vorhandene wird verwendet, PermissionSet.PermitOnly und Sie wird aufgerufen, um den zugrunde liegenden XmlResolverzu sichern.Either 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.

Wichtig

XmlSecureResolver-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten.XmlSecureResolver objects can contain sensitive information such as user credentials. Beim Zwischenspeichern XmlSecureResolver von Objekten sollten Sie vorsichtig sein, und das XmlSecureResolver Objekt sollte nicht an eine nicht vertrauenswürdige Komponente übergeben werden.You should be careful when caching XmlSecureResolver objects and should not pass the XmlSecureResolver object to an untrusted component.

Wichtig

Es gibt Unterschiede in der Sicherheitsinfrastruktur für Code, der auf dem .NET Framework Common Language Runtime (CLR) ausgeführt wird, sowie für Code, der auf der CLR ausgeführt wird, die in Microsoft SQL Server 2005 integriert ist.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. Dies kann zu Fällen führen, in denen der Code, der für die .NET Framework CLR entwickelt wurde, bei Verwendung in der SQL Server integrierten CLR anders funktioniert.This can lead to cases where code developed for the .NET Framework CLR operates differently when used on the SQL Server integrated CLR. Eine dieser Unterschiede wirkt sich XmlSecureResolver auf die-Klasse aus, wenn Sie über Beweise verfügen, die auf einer URL basieren (d CreateEvidenceForUrl(String) . h. XmlSecureResolver , wenn Sie die-Methode oder den-Konstruktor verwenden).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). Der Mechanismus zur Richtlinien Auflösung der SQL Server integrierten CLR verwendet nicht die Url -oder Zone -Informationen.The policy resolution mechanism of the SQL Server integrated CLR does not use the Url or Zone information. Stattdessen werden Berechtigungen basierend auf der GUID erteilt, die vom Server beim Laden von Assemblys hinzugefügt wird.Instead, it grants permissions based on the GUID that the server adds when assemblies are loaded. Wenn Sie XmlSecureResolver in der SQL Server integrierten CLR verwenden, stellen Sie alle erforderlichen Beweise direkt mithilfe eines angegebenen PermissionSetbereit.When you use the XmlSecureResolver in the SQL Server integrated CLR, provide any required evidence directly by using a specified PermissionSet.

So verwenden Sie einen sicheren Konflikt LöserTo use a secure resolver

  1. Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.Create an XmlSecureResolver with the correct permission set.

  2. Erstellen Sie ein XmlReaderSettings-Objekt, das das XmlSecureResolver-Objekt verwendet.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. Übergeben Sie XmlReaderSettings das-Objekt Create an die-Methode, wenn XmlReader Sie das-Objekt erstellen.Pass 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)   
    

So schränken Sie den Zugriff mithilfe einer URL einTo restrict access by using a URL

Verwenden Sie XmlSecureResolver(XmlResolver, String) den-Konstruktor, XmlSecureResolver um ein Objekt zu erstellen, das nur auf Ihre lokale Intranetsite zugreifen darf.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/") 

So schränken Sie den Zugriff mithilfe eines Berechtigungs Satzes einTo restrict access by using a permission set

  1. Erstellen eines WebPermission-ObjektsCreate a WebPermission object.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Geben Sie die URLs an, für die Sie den Zugriff zulassen möchten.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. Fügen Sie dem PermissionSet-Objekt die Webberechtigungen hinzu.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. Verwenden Sie XmlSecureResolver(XmlResolver, PermissionSet) den-Konstruktor, XmlSecureResolver um ein-Objekt mit dem Berechtigungs Satz zu erstellen.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)
    

    Ein weiteres XmlSecureResolver Beispiel finden Sie auf der Referenzseite.See the XmlSecureResolver reference page for another example.

So schränken Sie den Zugriff mithilfe von beweisen einTo restrict access by using evidence

Sie können den Zugriff einschränken, indem XmlSecureResolver(XmlResolver, Evidence) Sie den-Konstruktor verwenden und angeben. EvidenceYou can restrict access by using the XmlSecureResolver(XmlResolver, Evidence) constructor and specifying Evidence. Die Evidence-Klasse wird zum Erstellen der PermissionSet-Klasse verwendet, die auf die zugrunde liegende XmlResolver-Klasse angewendet wird.The Evidence is used to create the PermissionSet that is applied to the underlying XmlResolver. Die XmlSecureResolver-Klasse ruft vor dem Öffnen von Ressourcen die PermitOnly-Methode der erstellten PermissionSet-Klasse auf.The XmlSecureResolver calls PermitOnly on the created PermissionSet before opening any resources.

Im folgenden finden Sie einige gängige Szenarios und die Art der Beweise, die für jede bereitgestellt werden müssen:Here are some common scenarios and the type of evidence to provide for each:

  • Wenn Sie in einer vollständig vertrauenswürdigen Umgebung arbeiten, verwenden Sie die Assembly, um den Beweis zu erstellen: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)
    
  • Wenn Sie in einer teilweise vertrauenswürdigen Umgebung arbeiten, verfügen Sie über Code oder Daten aus einer externen Quelle, und Sie kennen den Ursprung der externen Quelle und haben einen überprüfbaren URI. verwenden Sie den URI, um den Beweis zu erstellen: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)
    
  • Wenn Sie in einer teilweise vertrauenswürdigen Umgebung arbeiten und Code oder Daten aus einer externen Quelle stammen, aber den Ursprung der externen Quelle nicht kennen, können Sie Folgendes tun: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:

    Setzen Sie den evidence-Parameter auf null.Set the evidence parameter to null. Dadurch kann nicht mehr auf Ressourcen zugegriffen werden.This allows no access to resources.

    - oder --or-

    Wenn die Anwendung den Zugriff auf einige Ressourcen verlangt, fordern Sie einen Beweis vom Aufrufer an.If your application requires some access to resources, request evidence from the caller.

So verwenden Sie den sicheren Konflikt Löser zum Laden eines XSLT-StylesheetsTo use the secure resolver to load an XSLT style sheet

  1. Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.Create an XmlSecureResolver with the correct permission set.

  2. Übergeben Sie die XmlSecureResolver an die Load-Methode.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)
    

Hinweise für Vererber

Diese Klasse hat eine Vererbungs Anforderung.This class has an inheritance demand. Volle Vertrauenswürdigkeit ist erforderlich, um von XmlSecureResolver der-Klasse zu erben.Full trust is required to inherit from the XmlSecureResolver class.

Konstruktoren

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

Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und 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)

Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und 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)

Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und URL.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and URL provided.

Eigenschaften

Credentials Credentials Credentials Credentials

Legt Anmeldeinformationen zum Authentifizieren von Webanforderungen fest.Sets credentials used to authenticate web requests.

Methoden

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

Erstellt einen Beweise mit der angegebenen URL.Creates evidence using the supplied URL.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.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)

Ordnet einem Objekt, das die eigentliche Ressource enthält, einen URI zu.Maps a URI to an object that contains the actual resource. Diese Methode legt temporär das im Konstruktor durch Aufruf von PermissionSet erstellte PermitOnly() fest, bevor GetEntity für den zugrunde liegenden XmlResolver zum Öffnen der Ressource aufgerufen wird.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)

Ordnet einem Objekt, das die eigentliche Ressource enthält, asynchron einen URI zu.Asynchronously maps a URI to an object that contains the actual resource.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Löst durch Aufruf von ResolveUri für den zugrunde liegenden XmlResolver den absoluten URI der Basis sowie relative URIs auf.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)

Erlaubt dem Resolver, andere Typen als Stream zurückzugeben.Enables the resolver to return types other than Stream.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für: