Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Vorgehensweise: Verwenden der "XmlSecureResolver"-Klasse

Mit der XmlSecureResolver-Klasse kann ein anderes XmlResolver-Objekt gesichert werden. Dies erfolgt durch Wrapping des XmlResolver-Objekts und Beschränken der Ressourcen, auf die der zugrunde liegende XmlResolver zugreifen kann. Beispielsweise kann mit der XmlSecureResolver-Klasse der Zugriff auf bestimmte Internetsites oder Internetzonen verhindert werden.

So schränken Sie den Zugriff mithilfe einer URL ein

  • Erstellen Sie ein XmlSecureResolver-Objekt, das nur auf die lokale Intranetsite zugreifen kann.

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

So schränken den Zugriff mithilfe eines Berechtigungssatzes ein

  1. Erstellen Sie ein WebPermission-Objekt.

    
    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    
    
  2. Beschränken Sie den Zugriff nur auf die zwei folgenden URLs.

    
    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.

    
    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    
    
  4. Erstellen Sie mithilfe des Berechtigungssatzes ein XmlSecureResolver-Objekt.

    
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
    
    
    

So beschränken Sie den Zugriff mithilfe von Beweisen ein

  • Sie können den Zugriff mithilfe von Evidence einschränken. 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.

    Die folgende Liste enthält einige mögliche Szenarios sowie den Beweistyp, der für jedes Szenario bereitgestellt werden muss.

    • Sie arbeiten in einer vollständig vertrauenswürdigen Umgebung:

      Verwenden Sie die Assembly, um den Beweis zu erstellen.

      
      Evidence myEvidence = this.GetType().Assembly.Evidence;
      XmlSecureResolver myResolver;
      myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
      
      
      
    • Sie arbeiten in einer teilweise vertrauenswürdigen Umgebung und verfügen über Code oder Daten aus einer externen Quelle. Sie kennen den Ursprung der externen Quelle und verfügen über einen überprüfbaren URI:

      Verwenden Sie den URI, um den Beweis zu erstellen.

      
      
      Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
      XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
      
      
      
    • Sie arbeiten in einer teilweise vertrauenswürdigen Umgebung, verfügen über Code oder Daten aus einer externen Quelle und kennen den Ursprung der externen Quelle nicht:

      Setzen Sie den evidence-Parameter auf null. 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.

Die XmlUrlResolver-Klasse wird als Standard zum Auflösen für alle Klassen im System.Xml-Namespace verwendet. Mit dieser Klasse werden XML-Dokumente geladen, externe Ressourcen aufgelöst (z. B. Entitäten, DTDs oder Schemata) und Direktiven importiert oder eingefügt.

Sie können diese Klasse überschreiben, indem Sie das zu verwendende XmlResolver-Objekt angeben. Durch Angeben der XmlSecureResolver-Klasse können Sie die Ressourcen einschränken, auf die die zugrunde liegende XmlResolver-Klasse zugreifen kann.

So erstellen Sie ein "XmlReader"-Objekt, das einen "XmlSecureResolver" verwendet

  1. Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.

  2. Erstellen Sie ein XmlReaderSettings-Objekt, das das XmlSecureResolver-Objekt verwendet.

    
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    
    
  3. Verwenden Sie das XmlReaderSettings-Objekt, um das XmlReader-Objekt zu erstellen.

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

So verwenden Sie "XmlSecureResolver" zum Laden eines XSLT-Stylesheets

  1. Erstellen Sie ein XmlSecureResolver-Objekt mit dem richtigen Berechtigungssatz.

  2. Übergeben Sie die XmlSecureResolver an die Load-Methode.

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