XmlSecureResolver Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schützt eine andere Implementierung von XmlResolver, indem das XmlResolver-Objekt umschlossen und der Zugriff auf die Ressourcen beschränkt wird, auf die der zugrunde liegende XmlResolver zugreifen kann.
public ref class XmlSecureResolver : System::Xml::XmlResolver
public class XmlSecureResolver : System.Xml.XmlResolver
type XmlSecureResolver = class
inherit XmlResolver
Public Class XmlSecureResolver
Inherits XmlResolver
- Vererbung
Hinweise
Die XmlUrlResolver-Klasse wird als Standard zum Auflösen für alle Klassen im System.Xml-Namespace verwendet. Es wird verwendet, um XML-Dokumente zu laden und externe Ressourcen wie Entitäten, DTDs oder Schemas aufzulösen und Direktiven zu importieren oder einzuschließen.
Sie können diese Standardeinstellung überschreiben, indem Sie das XmlResolver zu verwendende Objekt angeben. Wenn Sie beispielsweise die Ressourcen einschränken möchten, auf die der zugrunde liegende Zugriff XmlResolver möglich ist, können Sie ein XmlSecureResolver Objekt verwenden.
XmlSecureResolver umschließt eine konkrete Implementierung und XmlResolver schränkt die Ressourcen ein, auf die der zugrunde liegende XmlResolver Zugriff hat. XmlSecureResolver Beispielsweise kann die domänenübergreifende Umleitung verhindert werden, die aus einem eingebetteten URI-Verweis (Uniform Resource Identifier) auftritt.
Wenn Sie ein XmlSecureResolver Objekt erstellen, stellen Sie eine gültige XmlResolver Implementierung zusammen mit einer URL, einer Instanz eines Beweisobjekts oder einem Berechtigungssatz bereit, der von der XmlSecureResolver Sicherheit verwendet wird. Entweder wird eine System.Security.PermissionSet generiert oder die vorhandene verwendet und PermissionSet.PermitOnly wird aufgerufen, um die zugrunde liegende XmlResolverZusicherung zu unterstützen.
Wichtig
XmlSecureResolver-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten. Sie sollten beim Zwischenspeichern XmlSecureResolver von Objekten vorsichtig sein und das XmlSecureResolver Objekt nicht an eine nicht vertrauenswürdige Komponente übergeben.
Wichtig
Es gibt Unterschiede in der Sicherheitsinfrastruktur für Code, der auf der .NET Framework Common Language Runtime (CLR) ausgeführt wird, und für Code, der auf dem CLR ausgeführt wird, der in Microsoft SQL Server 2005 integriert ist. Dies kann zu Fällen führen, in denen Code, der für den .NET Framework CLR entwickelt wurde, anders funktioniert, wenn er auf dem SQL Server integrierten CLR verwendet wird. Eine dieser Unterschiede wirkt sich auf die XmlSecureResolver Klasse aus, wenn Sie Nachweise haben, die auf einer URL basieren (das heißt, wenn Sie die CreateEvidenceForUrl(String) Methode oder den XmlSecureResolver Konstruktor verwenden). Der Richtlinienauflösungsmechanismus des integrierten CLR SQL Server verwendet die Url informationen Zone nicht. Stattdessen gewährt sie Berechtigungen basierend auf der GUID, die der Server hinzufügt, wenn Assemblys geladen werden. Wenn Sie die XmlSecureResolver in der SQL Server integrierten CLR verwenden, stellen Sie alle erforderlichen Nachweise direkt mithilfe einer angegebenen .PermissionSet
So verwenden Sie einen sicheren Resolver
Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.
Erstellen Sie ein XmlReaderSettings-Objekt, das das XmlSecureResolver-Objekt verwendet.
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolverÜbergeben Sie das XmlReaderSettings Objekt an die Create Methode, wenn Sie das XmlReader Objekt erstellen.
XmlReader reader = XmlReader.Create("books.xml", settings);Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
So beschränken Sie den Zugriff mithilfe einer URL
Verwenden Sie den XmlSecureResolver(XmlResolver, String) Konstruktor, um ein XmlSecureResolver Objekt zu erstellen, das nur auf Ihre lokale Intranetwebsite zugreifen darf.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
So beschränken Sie den Zugriff mithilfe eines Berechtigungssatzes
Erstellen eines WebPermission-Objekts
WebPermission myWebPermission = new WebPermission(PermissionState.None);Dim myWebPermission As New WebPermission(PermissionState.None)Geben Sie die URLs an, auf die Sie den Zugriff zulassen möchten.
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/")Fügen Sie dem PermissionSet-Objekt die Webberechtigungen hinzu.
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)Verwenden Sie den Konstruktor, um ein XmlSecureResolver Objekt mithilfe des XmlSecureResolver(XmlResolver, PermissionSet) Berechtigungssatzes zu erstellen.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)Weitere Beispiele finden Sie auf der XmlSecureResolver Referenzseite.
So beschränken Sie den Zugriff mithilfe von Beweismitteln
Sie können den Zugriff mithilfe des XmlSecureResolver(XmlResolver, Evidence) Konstruktors einschränken und angeben Evidence. Die Evidence-Klasse wird zum Erstellen der PermissionSet-Klasse verwendet, die auf die zugrunde liegende XmlResolver-Klasse angewendet wird. Die XmlSecureResolver-Klasse ruft vor dem Öffnen von Ressourcen die PermitOnly-Methode der erstellten PermissionSet-Klasse auf.
Nachfolgend finden Sie einige gängige Szenarien und die Art der Nachweise, die für jede bereitgestellt werden sollen:
Wenn Sie in einer vollständig vertrauenswürdigen Umgebung arbeiten, verwenden Sie Ihre Assembly, um die Nachweise zu erstellen:
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 halbvertrauenswürdigen Umgebung arbeiten, verfügen Sie über Code oder Daten, die aus einer externen Quelle stammen, und Sie wissen den Ursprung der externen Quelle und haben einen nachweisbaren URI, verwenden Sie den URI, um die Nachweise zu erstellen:
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 halbvertrauenswürdigen Umgebung arbeiten und Code oder Daten aus einer externen Quelle haben, aber Sie wissen nicht, ob die Quelle außerhalb der Quelle liegt:
Setzen Sie den
evidence-Parameter aufnull. Dadurch kann nicht mehr auf Ressourcen zugegriffen werden.- oder -
Wenn die Anwendung den Zugriff auf einige Ressourcen verlangt, fordern Sie einen Beweis vom Aufrufer an.
So laden Sie ein XSLT-Stylesheet mithilfe des sicheren Resolvers
Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.
Übergeben Sie die XmlSecureResolver an die Load-Methode.
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 Vererbungsnachfrage. Vollständige Vertrauensstellung ist erforderlich, um von der XmlSecureResolver Klasse zu erben.
Konstruktoren
| XmlSecureResolver(XmlResolver, Evidence) |
Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und Evidence. |
| XmlSecureResolver(XmlResolver, PermissionSet) |
Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und PermissionSet. |
| XmlSecureResolver(XmlResolver, String) |
Initialisiert eine neue Instanz der XmlSecureResolver-Klasse mit dem angegebenen XmlResolver und URL. |
Eigenschaften
| Credentials |
Legt Anmeldeinformationen zum Authentifizieren von Webanforderungen fest. |
Methoden
| CreateEvidenceForUrl(String) |
Erstellt einen Beweise mit der angegebenen URL. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
| GetEntity(Uri, String, Type) |
Ordnet einem Objekt, das die eigentliche Ressource enthält, einen URI zu. Diese Methode legt temporär das im Konstruktor durch Aufruf von PermissionSet erstellte PermitOnly() fest, bevor |
| GetEntityAsync(Uri, String, Type) |
Ordnet einem Objekt, das die eigentliche Ressource enthält, asynchron einen URI zu. |
| GetEntityAsync(Uri, String, Type) |
Ordnet einem Objekt, das die eigentliche Ressource enthält, asynchron einen URI zu. (Geerbt von XmlResolver) |
| GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
| ResolveUri(Uri, String) |
Löst durch Aufruf von |
| SupportsType(Uri, Type) |
Erlaubt dem Resolver, andere Typen als Stream zurückzugeben. (Geerbt von XmlResolver) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |