Sdílet prostřednictvím


System.Xml.XmlSecureResolver – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída XmlUrlResolver je výchozím překladačem pro všechny třídy v System.Xml oboru názvů. Používá se k načtení dokumentů XML a k překladu externích prostředků, jako jsou entity, DTD nebo schémata a direktivy importu nebo zahrnutí.

Toto výchozí nastavení můžete přepsat zadáním objektu, XmlResolver který se má použít. Pokud například chcete omezit prostředky, ke kterým má podkladový zdroj XmlResolver přístup, můžete použít XmlSecureResolver objekt.

XmlSecureResolver obtéká kolem konkrétní implementace XmlResolver a omezuje prostředky, ke kterým má podkladový XmlResolver zdroj přístup. Má například XmlSecureResolver možnost zakázat přesměrování mezi doménou, ke kterému dochází z vloženého odkazu URI (Uniform Resource Identifier).

Při vytváření objektu XmlSecureResolver poskytnete platnou XmlResolver implementaci společně s adresou URL, instancí objektu důkazu nebo sadou oprávnění, která se používá XmlSecureResolver k určení zabezpečení. System.Security.PermissionSet Buď se vygeneruje, nebo se použije existující a PermissionSet.PermitOnly volá se na ni, aby pomohl zabezpečit podklad XmlResolver.

Důležité

XmlSecureResolver objekty mohou obsahovat citlivé informace, jako jsou přihlašovací údaje uživatele. Při ukládání objektů do mezipaměti XmlSecureResolver buďte opatrní a neměli byste ho XmlSecureResolver předat nedůvěryhodné komponentě.

Důležité

Existují rozdíly v infrastruktuře zabezpečení pro kód spuštěný v modulu CLR (Common Language Runtime) .NET a pro kód spuštěný v modulu CLR, který je integrovaný v microsoft SQL Serveru 2005. To může vést k případům, kdy kód vyvinutý pro .NET CLR funguje jinak, když se používá na integrovaném modulu CLR SQL Serveru. Jeden z těchto rozdílů ovlivňuje XmlSecureResolver třídu, pokud máte důkazy, které jsou založené na adrese URL (to znamená při použití CreateEvidenceForUrl(String) metody nebo konstruktoru XmlSecureResolver ). Mechanismus řešení zásad integrovaného modulu CLR SYSTÉMU SQL Server nepoužívá Url tyto informace ani Zone informace. Místo toho uděluje oprávnění na základě identifikátoru GUID, který server přidá při načtení sestavení. Pokud použijete XmlSecureResolver v integrovaném modulu CLR systému SQL Server, uveďte všechny požadované důkazy přímo pomocí zadaného PermissionSet.

Použití zabezpečeného překladače

  1. Vytvořte správnou XmlSecureResolver sadu oprávnění.

  2. Vytvořte XmlReaderSettings objekt, který objekt XmlSecureResolver používá.

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. XmlReaderSettings Při vytváření XmlReader objektu Create předejte objekt metodě.

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

Omezení přístupu pomocí adresy URL

Pomocí konstruktoru XmlSecureResolver(XmlResolver, String)XmlSecureResolver vytvořte objekt, který má povolený přístup pouze k místnímu intranetovém webu.

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

Omezení přístupu pomocí sady oprávnění

  1. Vytvoření objektu WebPermission

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Zadejte adresy URL, ke kterým chcete povolit přístup.

    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. Přidejte k objektu PermissionSet oprávnění webu.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. Pomocí konstruktoru XmlSecureResolver(XmlResolver, PermissionSet) vytvořte XmlSecureResolver objekt pomocí sady oprávnění.

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

    Další příklad najdete na XmlSecureResolver referenční stránce.

Omezení přístupu pomocí důkazů

Přístup lze omezit pomocí konstruktoru XmlSecureResolver(XmlResolver, Evidence) a určení Evidence. Slouží Evidence k vytvoření použitého PermissionSet základního objektu XmlResolver. Volání XmlSecureResolverPermitOnly vytvořeného PermissionSet prostředku před otevřením jakýchkoli prostředků.

Tady jsou některé běžné scénáře a typ důkazů, které se mají pro každý z nich poskytnout:

  • Pokud pracujete v plně důvěryhodném prostředí, vytvořte pomocí sestavení důkaz:

    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)
    
  • Pokud pracujete v částečně důvěryhodném prostředí, máte kód nebo data pocházející z vnějšího zdroje a znáte původ vnějšího zdroje a máte ověřitelný identifikátor URI, pomocí tohoto identifikátoru URI vytvořte důkazy:

    
    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)
    
  • Pokud pracujete v částečně důvěryhodném prostředí a máte kód nebo data pocházející z vnějšího zdroje, ale neznáte původ vnějšího zdroje:

    Nastavte parametr na evidencenull. To neumožňuje přístup k prostředkům.

    nebo

    Pokud vaše aplikace vyžaduje přístup k prostředkům, požádejte volajícího o důkaz.

Použití zabezpečeného překladače k načtení šablony stylů XSLT

  1. Vytvořte správnou XmlSecureResolver sadu oprávnění.

  2. XmlSecureResolver Předejte metoduLoad.

    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)