Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.
La classe XmlUrlResolver corrisponde al sistema di risoluzione predefinito per tutte le classi dello spazio dei nomi System.Xml. Viene usato per caricare documenti XML e per risolvere risorse esterne, ad esempio entità, DTD o schemi e importare o includere direttive.
È possibile eseguire l'override di questa impostazione predefinita specificando l'oggetto XmlResolver da usare. Ad esempio, se si desidera limitare le risorse a cui l'oggetto sottostante XmlResolver può accedere, è possibile usare un XmlSecureResolver oggetto .
XmlSecureResolver esegue il wrapping di un'implementazione concreta di XmlResolver e limita le risorse a cui l'oggetto sottostante XmlResolver ha accesso. Ad esempio, XmlSecureResolver ha la possibilità di impedire il reindirizzamento tra domini, che si verifica da un riferimento URI (Uniform Resource Identifier) incorporato.
Quando si costruisce un XmlSecureResolver oggetto, si fornisce un'implementazione valida XmlResolver insieme a un URL, a un'istanza di un oggetto evidence o a un set di autorizzazioni, usato da per determinare la XmlSecureResolver sicurezza. Viene generato un System.Security.PermissionSet oggetto o viene usato quello esistente e PermissionSet.PermitOnly viene chiamato su di esso per proteggere l'oggetto sottostante XmlResolver.
Importante
Gli oggetti XmlSecureResolver possono contenere informazioni sensibili quali le credenziali utente. Prestare attenzione quando si memorizzano nella cache XmlSecureResolver gli oggetti e non devono passare l'oggetto XmlSecureResolver a un componente non attendibile.
Importante
Esistono differenze nell'infrastruttura di sicurezza per il codice in esecuzione in .NET Common Language Runtime (CLR) e per il codice in esecuzione in CLR integrato in Microsoft SQL Server 2005. Ciò può causare casi in cui il codice sviluppato per CLR .NET funziona in modo diverso quando viene usato in CLR integrato di SQL Server. Una di queste differenze influisce sulla XmlSecureResolver classe quando si dispone di prove basate su un URL, ovvero quando si usa il CreateEvidenceForUrl(String) metodo o il XmlSecureResolver costruttore . Il meccanismo di risoluzione dei criteri di SQL Server integrated CLR non usa le Url informazioni o Zone . Concede invece le autorizzazioni in base al GUID aggiunto dal server quando vengono caricati gli assembly. Quando si usa XmlSecureResolver in CLR integrato di SQL Server, specificare direttamente qualsiasi evidenza necessaria usando un oggetto specificato PermissionSet.
Creare un oggetto XmlSecureResolver utilizzando il set di autorizzazioni corretto.
Creare un oggetto XmlReaderSettings che utilizzi l'oggetto XmlSecureResolver.
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
Passare l'oggetto XmlReaderSettings al Create metodo durante la creazione dell'oggetto XmlReader .
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
Usare il XmlSecureResolver(XmlResolver, String) costruttore per creare un XmlSecureResolver oggetto autorizzato ad accedere solo al sito Intranet locale.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
Creare un oggetto WebPermission.
WebPermission myWebPermission = new WebPermission(PermissionState.None);
Dim myWebPermission As New WebPermission(PermissionState.None)
Specificare gli URL a cui si vuole consentire l'accesso.
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/")
Aggiungere autorizzazioni Web all'oggetto PermissionSet.
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
Usare il XmlSecureResolver(XmlResolver, PermissionSet) costruttore per creare un XmlSecureResolver oggetto usando il set di autorizzazioni.
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
Per un altro esempio, vedere la XmlSecureResolver pagina di riferimento.
È possibile limitare l'accesso usando il XmlSecureResolver(XmlResolver, Evidence) costruttore e specificando Evidence. Il tipo Evidence viene utilizzato per creare l'oggetto PermissionSet che verrà applicato all'oggetto XmlResolver sottostante. Prima di aprire una risorsa, l'oggetto XmlSecureResolver chiama il metodo PermitOnly sull'oggetto PermissionSet creato.
Ecco alcuni scenari comuni e il tipo di evidenza da fornire per ognuno di essi:
Se si lavora in un ambiente completamente attendibile, usare l'assembly per creare l'evidenza:
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)
Se si lavora in un ambiente semi-attendibile, si dispone di codice o dati provenienti da un'origine esterna e si conosce l'origine dell'origine esterna e si dispone di un URI verificabile, usare l'URI per creare l'evidenza:
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)
Se si lavora in un ambiente semi-attendibile e si dispone di codice o dati provenienti da un'origine esterna, ma non si conosce l'origine dell'origine esterna, sia:
Impostare il parametro
evidence
sunull
. In tal modo si impedisce l'accesso alle risorse.-o-
Se l'applicazione richiede accesso alle risorse, richiedere l'evidenza dal chiamante.
Creare un oggetto XmlSecureResolver utilizzando il set di autorizzazioni corretto.
Passare l'oggetto XmlSecureResolver al metodo Load .
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)
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: