Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
De XmlUrlResolver klasse is de standaardresolver voor alle klassen in de System.Xml naamruimte. Het wordt gebruikt voor het laden van XML-documenten en het oplossen van externe resources, zoals entiteiten, DTD's of schema's, en het importeren of opnemen van instructies.
U kunt deze standaardinstelling overschrijven door het XmlResolver object op te geven dat u wilt gebruiken. Als u bijvoorbeeld de resources wilt beperken waartoe de onderliggende XmlResolver resources toegang hebben, kunt u een XmlSecureResolver object gebruiken.
XmlSecureResolver omvat een concrete implementatie van XmlResolver en beperkt de toegang tot de resources waartoe de onderliggende XmlResolver toegang heeft. Heeft bijvoorbeeld XmlSecureResolver de mogelijkheid om omleiding tussen domeinen te verbieden, die afkomstig is van een ingesloten URI-verwijzing (Uniform Resource Identifier).
Wanneer u een XmlSecureResolver object maakt, geeft u een geldige XmlResolver implementatie op, samen met een URL, een exemplaar van een bewijsobject of een machtigingenset, die wordt gebruikt door de XmlSecureResolver beveiliging te bepalen. Er wordt een System.Security.PermissionSet gegenereerd of de bestaande wordt gebruikt en PermissionSet.PermitOnly wordt erop aangeroepen om de onderliggende XmlResolver te beveiligen.
Belangrijk
XmlSecureResolver objecten kunnen gevoelige informatie bevatten, zoals gebruikersreferenties. Wees voorzichtig bij het cachen van XmlSecureResolver objecten en geef het XmlSecureResolver object niet door aan een niet-vertrouwd onderdeel.
Belangrijk
Er zijn verschillen in de beveiligingsinfrastructuur voor code die wordt uitgevoerd op de .NET Common Language Runtime (CLR) en voor code die wordt uitgevoerd op de CLR die is geïntegreerd in Microsoft SQL Server 2005. Dit kan leiden tot gevallen waarin code die is ontwikkeld voor .NET CLR anders werkt wanneer deze wordt gebruikt op de geïntegreerde CLR van SQL Server. Een van deze verschillen is van invloed op de XmlSecureResolver klasse wanneer u bewijs hebt dat is gebaseerd op een URL (dat wil gezegd, wanneer u de CreateEvidenceForUrl(String) methode of de XmlSecureResolver constructor gebruikt). Het mechanisme voor beleidsomzetting van de geïntegreerde CLR van SQL Server maakt geen gebruik van de Url of Zone informatie. In plaats daarvan verleent het machtigingen op basis van de GUID die de server toevoegt wanneer assembly's worden geladen. Wanneer u de XmlSecureResolver geïntegreerde CLR van SQL Server gebruikt, dient u alle vereiste bewijzen rechtstreeks op te geven met behulp van een opgegeven PermissionSet.
Een beveiligde resolver gebruiken
Maak een XmlSecureResolver met de juiste machtigingenset.
Maak een XmlReaderSettings object dat gebruikmaakt van het XmlSecureResolver object.
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolverGeef het XmlReaderSettings object door aan de Create methode wanneer u het XmlReader object maakt.
XmlReader reader = XmlReader.Create("books.xml", settings);Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
Toegang beperken met behulp van een URL
Gebruik de XmlSecureResolver(XmlResolver, String) constructor om een XmlSecureResolver object te maken dat alleen toegang heeft tot uw lokale intranetsite.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
Toegang beperken met behulp van een machtigingenset
Maak een WebPermission object.
WebPermission myWebPermission = new WebPermission(PermissionState.None);Dim myWebPermission As New WebPermission(PermissionState.None)Geef de URL's op waartoe u toegang wilt toestaan.
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/")Voeg de webmachtigingen toe aan het PermissionSet object.
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)Gebruik de XmlSecureResolver(XmlResolver, PermissionSet) constructor om een XmlSecureResolver object te maken met behulp van de machtigingenset.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)Zie de XmlSecureResolver referentiepagina voor een ander voorbeeld.
Toegang beperken met behulp van bewijsmateriaal
U kunt de toegang beperken met behulp van de XmlSecureResolver(XmlResolver, Evidence) constructor en opgeven Evidence. De Evidence wordt gebruikt om de PermissionSet waarde te maken die wordt toegepast op de onderliggende XmlResolverwaarde. De XmlSecureResolver roept PermitOnly aan op de gemaakte PermissionSet voordat er middelen worden geopend.
Hier volgen enkele veelvoorkomende scenario's en het type bewijs dat voor elk van deze scenario's moet worden verstrekt:
Als u in een volledig vertrouwde omgeving werkt, gebruikt u uw assembly om het bewijs te maken:
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)Als u in een semi-vertrouwde omgeving werkt, hebt u code of gegevens afkomstig van een externe bron en weet u de oorsprong van de externe bron en hebt u een verifieerbare URI, gebruikt u de URI om het bewijs te maken:
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)Als u in een semi-vertrouwde omgeving werkt en u code of gegevens hebt die afkomstig zijn van een externe bron, maar u niet weet wat de oorsprong is van de externe bron:
Stel de
evidenceparameter in opnull. Hiermee is er geen toegang tot bronnen.– of –
Als voor uw toepassing toegang tot resources is vereist, vraagt u bewijs aan bij de beller.
De beveiligde resolver gebruiken om een XSLT-opmaakmodel te laden
Maak een XmlSecureResolver met de juiste machtigingenset.
Geef de XmlSecureResolver methode door aan de 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)