Procedura: utilizzare la classe XmlSecureResolver
La classe XmlSecureResolver consente di proteggere un altro oggetto XmlResolver includendo l'oggetto XmlResolver e imponendo limitazioni sulle risorse accessibili all'oggetto XmlResolver sottostante. Ad esempio, la classe XmlSecureResolver consente di proibire l'accesso a specifici siti Internet o a zone particolari.
Per limitare l'accesso con un URL
Creare un oggetto XmlSecureResolver che sia autorizzato ad accedere solo al sito intranet locale.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Per limitare l'accesso con un set di autorizzazioni
Creare un oggetto WebPermission.
Dim myWebPermission As New WebPermission(PermissionState.None)
WebPermission myWebPermission = new WebPermission(PermissionState.None);
Consentire l'accesso solo ai seguenti due URL.
myWebPermission.AddPermission(NetworkAccess.Connect, "https://www.contoso.com/") myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
myWebPermission.AddPermission(NetworkAccess.Connect,"https://www.contoso.com/"); myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
Aggiungere autorizzazioni Web all'oggetto PermissionSet.
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
Creare un oggetto XmlSecureResolver utilizzando il set di autorizzazioni.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
Per limitare l'accesso con una prova
È possibile limitare l'accesso utilizzando il tipo 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.
Nell'elenco seguente vengono riepilogati alcuni possibili scenari e il tipo di prova da fornire per ogni scenario.
Funzionamento in un ambiente completamente attendibile:
Utilizzare l'assembly per creare la prova.
Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence Dim myResolver As XmlSecureResolver myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = this.GetType().Assembly.Evidence; XmlSecureResolver myResolver; myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
Funzionamento in un ambiente di attendibilità parziale con codice o dati in arrivo da un'origine esterna. Si conosce l'origine esterna e si dispone di un URI verificabile:
Utilizzare l'URI per creare la prova.
Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI) Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI); XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
Funzionamento in un ambiente di attendibilità parziale con codice o dati in arrivo da un'origine esterna sconosciuta.
Impostare il parametro evidence su null. In tal modo si impedisce l'accesso alle risorse.
In alternativa
Se l'applicazione richiede accesso alle risorse, richiedere la prova dal chiamate.
Utilizzo di XmlSecureResolver per risolvere risorse XML
La classe XmlUrlResolver corrisponde al sistema di risoluzione predefinito per tutte le classi dello spazio dei nomi System.Xml. Viene utilizzata per caricare documenti XML e per risolvere risorse esterne come entità, DTD o schemi e importare o includere direttive.
È possibile eseguire l'override di questa operazione specificando l'oggetto XmlResolver da utilizzare. Se si specifica un oggetto XmlSecureResolver, è possibile limitare le risorse a cui può accedere l'oggetto XmlResolver sottostante.
Per creare un oggetto XmlReader che utilizzi un XmlSecureResolver
Creare un oggetto XmlSecureResolver utilizzando il set di autorizzazioni corretto.
Creare un oggetto XmlReaderSettings che utilizzi l'oggetto XmlSecureResolver.
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
Utilizzare l'oggetto XmlReaderSettings per creare l'oggetto XmlReader.
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReader reader = XmlReader.Create("books.xml", settings);
Per utilizzare XmlSecureResolver per caricare un foglio di stile XSLT
Creare un oggetto XmlSecureResolver utilizzando il set di autorizzazioni corretto.
Passare il tipo XmlSecureResolver al metodo Load.
Dim xslt As New XslCompiledTransform() xslt.Load("https://serverName/data/xsl/sort.xsl", Nothing, myResolver)
XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("https://serverName/data/xsl/sort.xsl", null, myResolver);