System.Xml Spazio dei nomi
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce supporto basato su standard per l'elaborazione xml.
Classi
| Nome | Descrizione |
|---|---|
| NameTable |
Implementa un oggetto a XmlNameTablethread singolo. |
| UniqueId |
Identificatore univoco ottimizzato per guid. |
| XmlAttribute |
Rappresenta un attributo. I valori validi e predefiniti per l'attributo sono definiti in una definizione del tipo di documento (DTD) o in uno schema. |
| XmlAttributeCollection |
Rappresenta una raccolta di attributi a cui è possibile accedere in base al nome o all'indice. |
| XmlBinaryReaderSession |
Consente la gestione dinamica delle stringhe ottimizzate. |
| XmlBinaryWriterSession |
Consente di usare un dizionario dinamico per comprimere stringhe comuni visualizzate in un messaggio e mantenere lo stato. |
| XmlCDataSection |
Rappresenta una sezione CDATA. |
| XmlCharacterData |
Fornisce metodi di manipolazione del testo utilizzati da diverse classi. |
| XmlComment |
Rappresenta il contenuto di un commento XML. |
| XmlConvert |
Codifica e decodifica i nomi XML e fornisce metodi per la conversione tra tipi Common Language Runtime e tipi XSD (XML Schema Definition Language). Quando si convertono tipi di dati, i valori restituiti sono indipendenti dalle impostazioni locali. |
| XmlDataDocument |
Consente di archiviare, recuperare e modificare dati strutturati tramite un oggetto relazionale DataSet. |
| XmlDeclaration |
Rappresenta il nodo <della dichiarazione XML ?xml version='1.0'...?>. |
| XmlDictionary |
Implementa un dizionario usato per ottimizzare le implementazioni di lettore/writer XML di Windows Communication Foundation (WCF). |
| XmlDictionaryReader |
Classe |
| XmlDictionaryReaderQuotas |
Contiene valori di quota configurabili per XmlDictionaryReaders. |
| XmlDictionaryString |
Rappresenta una voce archiviata in un oggetto XmlDictionary. |
| XmlDictionaryWriter |
Rappresenta una classe astratta da cui deriva XmlWriter Windows Communication Foundation (WCF) per eseguire la serializzazione e la deserializzazione. |
| XmlDocument |
Rappresenta un documento XML. È possibile usare questa classe per caricare, convalidare, modificare, aggiungere e posizionare xml in un documento. |
| XmlDocumentFragment |
Rappresenta un oggetto leggero utile per le operazioni di inserimento albero. |
| XmlDocumentType |
Rappresenta la dichiarazione del tipo di documento. |
| XmlDocumentXPathExtensions |
Fornisce metodi di estensione per e XmlNode per lo XmlDocument spostamento di documenti. |
| XmlElement |
Rappresenta un elemento . |
| XmlEntity |
Rappresenta una dichiarazione di entità, ad esempio <! ENTITY... >. |
| XmlEntityReference |
Rappresenta un nodo di riferimento di entità. |
| XmlException |
Restituisce informazioni dettagliate sull'ultima eccezione. |
| XmlImplementation |
Definisce il contesto per un set di XmlDocument oggetti. |
| XmlLinkedNode |
Ottiene il nodo immediatamente precedente o successivo a questo nodo. |
| XmlNamedNodeMap |
Rappresenta una raccolta di nodi a cui è possibile accedere in base al nome o all'indice. |
| XmlNamespaceManager |
Risolve, aggiunge e rimuove gli spazi dei nomi in una raccolta e fornisce la gestione dell'ambito per questi spazi dei nomi. |
| XmlNameTable |
Tabella di oggetti stringa atomizzati. |
| XmlNode |
Rappresenta un singolo nodo nel documento XML. |
| XmlNodeChangedEventArgs |
Fornisce i dati per gli NodeChangedeventi , NodeChangingNodeInserted, NodeInserting, NodeRemoved e NodeRemoving . |
| XmlNodeList |
Rappresenta una raccolta ordinata di nodi. |
| XmlNodeReader |
Rappresenta un lettore che fornisce accesso rapido e non memorizzato nella cache solo ai dati XML in un oggetto XmlNode. |
| XmlNotation |
Rappresenta una dichiarazione di notazione, ad esempio <! NOTAZIONE... >. |
| XmlParserContext |
Fornisce tutte le informazioni di contesto richieste da XmlReader per analizzare un frammento XML. |
| XmlProcessingInstruction |
Rappresenta un'istruzione di elaborazione, che XML definisce per mantenere le informazioni specifiche del processore nel testo del documento. |
| XmlQualifiedName |
Rappresenta un nome completo XML. |
| XmlReader |
Rappresenta un lettore che fornisce accesso rapido, non memorizzato in modalità forward-only ai dati XML. |
| XmlReaderSettings |
Specifica un set di funzionalità da supportare sull'oggetto XmlReader creato dal Create metodo . |
| XmlResolver |
Risolve le risorse XML esterne denominate da un URI (Uniform Resource Identifier). |
| XmlSecureResolver |
Consente di proteggere un'altra implementazione di eseguendo il wrapping dell'oggetto XmlResolverXmlResolver e limitando le risorse a cui l'oggetto sottostante XmlResolver ha accesso. |
| XmlSignificantWhitespace |
Rappresenta lo spazio vuoto tra il markup in un nodo di contenuto misto o uno spazio vuoto all'interno di un ambito xml:space= 'preserve'. Questo è anche detto spazio vuoto significativo. |
| XmlText |
Rappresenta il contenuto di testo di un elemento o di un attributo. |
| XmlTextReader |
Rappresenta un lettore che fornisce accesso rapido e non memorizzato nella cache ai dati XML. È consigliabile usare invece la XmlReader classe . |
| XmlTextWriter |
Rappresenta un writer che fornisce un modo rapido, non memorizzato nella cache, di generare flussi o file contenenti dati XML conformi alle raccomandazioni W3C Extensible Markup Language (XML) 1.0 e spazi dei nomi nei consigli XML. È consigliabile usare invece la XmlWriter classe . |
| XmlUrlResolver |
Risolve le risorse XML esterne denominate da un URI (Uniform Resource Identifier). |
| XmlValidatingReader |
Rappresenta un lettore che fornisce la definizione del tipo di documento (DTD), lo schema XML-Data ridotto (XDR) e la convalida XSD (XML Schema Definition Language). Questa classe è obsoleta. È consigliabile usare la XmlReaderSettings classe e il Create metodo per creare un lettore XML di convalida. |
| XmlWhitespace |
Rappresenta lo spazio vuoto nel contenuto dell'elemento. |
| XmlWriter |
Rappresenta un writer che fornisce un modo rapido, non memorizzato nella cache, forward-only per generare flussi o file che contengono dati XML. |
| XmlWriterSettings |
Specifica un set di funzionalità da supportare sull'oggetto XmlWriter creato dal Create metodo . |
| XmlXapResolver |
Il tipo XmlXapResolver viene usato per risolvere le risorse nel pacchetto XAP dell'applicazione Silverlight. |
Interfacce
| Nome | Descrizione |
|---|---|
| IApplicationResourceStreamResolver |
Rappresenta un sistema di risoluzione del flusso di risorse dell'applicazione. |
| IFragmentCapableXmlDictionaryWriter |
Contiene proprietà e metodi che, se implementati da , XmlDictionaryWriterconsentono l'elaborazione di frammenti XML. |
| IHasXmlNode |
Consente a una classe di restituire un oggetto XmlNode dal contesto o dalla posizione corrente. |
| IStreamProvider |
Rappresenta un'interfaccia che può essere implementata dalle classi che forniscono flussi. |
| IXmlBinaryReaderInitializer |
Fornisce metodi per reinizializzare un lettore binario per leggere un nuovo documento. |
| IXmlBinaryWriterInitializer |
Specifica i requisiti di implementazione per i writer binari XML che derivano da questa interfaccia. |
| IXmlDictionary |
Oggetto |
| IXmlLineInfo |
Fornisce un'interfaccia per consentire a una classe di restituire informazioni sulla riga e sulla posizione. |
| IXmlMtomReaderInitializer |
Specifica i requisiti di implementazione per i lettori XML MTOM che derivano da questa interfaccia. |
| IXmlMtomWriterInitializer |
Se implementato da un writer MTOM, questa interfaccia garantisce l'inizializzazione per un writer MTOM. |
| IXmlNamespaceResolver |
Fornisce l'accesso in sola lettura a un set di mapping di prefissi e spazi dei nomi. |
| IXmlTextReaderInitializer |
Specifica i requisiti di implementazione per i lettori di testo XML che derivano da questa interfaccia. |
| IXmlTextWriterInitializer |
Specifica i requisiti di implementazione per i writer di testo XML che derivano da questa interfaccia. |
Enumerazioni
| Nome | Descrizione |
|---|---|
| ConformanceLevel |
Specifica la quantità di controllo di input o output eseguita XmlReader e XmlWriter oggetti. |
| DtdProcessing |
Specifica le opzioni per l'elaborazione di DTD. L'enumerazione DtdProcessing viene utilizzata dalla classe XmlReaderSettings. |
| EntityHandling |
Specifica il modo in cui l'XmlTextReader o XmlValidatingReader gestire le entità. |
| Formatting |
Specifica le opzioni di formattazione per il XmlTextWriter. |
| NamespaceHandling |
Specifica se rimuovere dichiarazioni di spazio dei nomi duplicate nella XmlWriter. |
| NewLineHandling |
Specifica come gestire le interruzioni di riga. |
| ReadState |
Specifica lo stato del lettore. |
| ValidationType |
Specifica il tipo di convalida da eseguire. |
| WhitespaceHandling |
Specifica la modalità di gestione degli spazi vuoti. |
| WriteState |
Specifica lo stato del XmlWriter. |
| XmlDateTimeSerializationMode |
Specifica come trattare il valore di ora durante la conversione tra stringa e DateTime. |
| XmlDictionaryReaderQuotaTypes |
Enumera i valori di quota configurabili per XmlDictionaryReaders. |
| XmlNamespaceScope |
Definisce l'ambito dello spazio dei nomi. |
| XmlNodeChangedAction |
Specifica il tipo di modifica del nodo. |
| XmlNodeOrder |
Descrive l'ordine dei documenti di un nodo rispetto a un secondo nodo. |
| XmlNodeType |
Specifica il tipo di nodo. |
| XmlOutputMethod |
Specifica il metodo utilizzato per serializzare l'output XmlWriter. |
| XmlSpace |
Specifica l'ambito di |
| XmlTokenizedType |
Rappresenta il tipo XML per la stringa. In questo modo la stringa può essere letta come tipo XML specifico, ad esempio un tipo di sezione CDATA. |
Delegati
| Nome | Descrizione |
|---|---|
| OnXmlDictionaryReaderClose |
|
| XmlNodeChangedEventHandler |
Rappresenta il metodo che gestisce NodeChangedgli eventi , NodeChangingNodeInserted, NodeInserting, NodeRemoved e NodeRemoving . |
Commenti
Standard supportati
Lo System.Xml spazio dei nomi supporta questi standard:
- XML 1.0, incluso il supporto DTD
- Spazi dei nomi XML, sia a livello di flusso che dom
- XML Schema
- Espressioni XPath
- Trasformazioni XSLT
- DOM Level 1 Core
- DOM Level 2 Core
Vedere la sezione Differenze rispetto alle specifiche W3C per due casi in cui le classi XML differiscono dalle raccomandazioni W3C.
Elaborazione asincrona di XML
Le System.Xml.XmlReader classi e System.Xml.XmlWriter includono diversi metodi asincroni basati sul modello di programmazione asincrona. Questi metodi possono essere identificati dalla stringa "Async" alla fine dei nomi. Con questi metodi, è possibile scrivere codice asincrono simile al codice sincrono ed è possibile eseguire facilmente la migrazione del codice sincrono esistente al codice asincrono.
Usare i metodi asincroni nelle app in cui è presente una latenza significativa del flusso di rete. Evitare di usare le API asincrone per il flusso di memoria o le operazioni di lettura/scrittura del flusso di file locale. Il flusso di input, XmlTextReadere XmlTextWriter deve supportare anche le operazioni asincrone. In caso contrario, i thread continueranno a essere bloccati dalle operazioni di I/O.
Non è consigliabile combinare chiamate di funzione sincrone e asincrone, perché è possibile dimenticare di usare la
awaitparola chiave o usare un'API sincrona in cui è necessaria una funzione asincrona.Non impostare il XmlReaderSettings.Async flag o XmlWriterSettings.Async su
truese non si intende usare un metodo asincrono.Se si dimentica di specificare la
awaitparola chiave quando si chiama un metodo asincrono, i risultati sono non deterministici: è possibile ricevere il risultato previsto o un'eccezione.Quando un XmlReader oggetto legge un nodo di testo di grandi dimensioni, potrebbe memorizzare nella cache solo un valore di testo parziale e restituire il nodo di testo, pertanto il recupero della XmlReader.Value proprietà potrebbe essere bloccato da un'operazione di I/O. Usare il XmlReader.GetValueAsync metodo per ottenere il valore di testo in modalità asincrona oppure usare il XmlReader.ReadValueChunkAsync metodo per leggere un blocco di testo di grandi dimensioni in blocchi.
Quando si usa un XmlWriter oggetto, chiamare il XmlWriter.FlushAsync metodo prima di chiamare XmlWriter.Close per evitare di bloccare un'operazione di I/O.
Differenze rispetto alle specifiche W3C
In due casi che coinvolgono vincoli sui componenti dello schema del gruppo di modelli, lo System.Xml spazio dei nomi differisce dalle raccomandazioni W3C.
Coerenza nelle dichiarazioni degli elementi:
In alcuni casi, quando vengono usati i gruppi di sostituzione, l'implementazione System.Xml non soddisfa il "Vincolo componente schema: dichiarazioni di elemento coerenti", descritto nella sezione Vincoli sui componenti dello schema del gruppo di modelli della specifica W3C.
Ad esempio, lo schema seguente include elementi con lo stesso nome ma tipi diversi nello stesso modello di contenuto e vengono usati gruppi di sostituzione. Questo dovrebbe causare un errore, ma System.Xml compila e convalida lo schema senza errori.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="t1"/>
<xs:complexType name="t1"/>
<xs:element name="e2" type="t2" substitutionGroup="e1"/>
<xs:complexType name="t2">
<xs:complexContent>
<xs:extension base="t1">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1"/>
<xs:element name="e2" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
In questo schema il tipo t3 contiene una sequenza di elementi. A causa della sostituzione, il riferimento all'elemento e1 dalla sequenza può comportare l'elemento di tipo t1 o l'elemento e1e2 di tipo t2. Quest'ultimo caso genera una sequenza di due e2 elementi, dove uno è di tipo t2 e l'altro è di tipo xs:int.
Attribuzione di particelle univoca:
Nelle condizioni seguenti, l'implementazione System.Xml non soddisfa il "Vincolo componente schema: attribuzione di particelle univoche", descritto nella sezione Vincoli sui componenti dello schema del gruppo di modelli della specifica W3C.
- Uno degli elementi del gruppo fa riferimento a un altro elemento.
- L'elemento a cui si fa riferimento è un elemento head di un gruppo di sostituzione.
- Il gruppo di sostituzione contiene un elemento con lo stesso nome di uno degli elementi del gruppo.
- La cardinalità dell'elemento che fa riferimento all'elemento head del gruppo di sostituzione e all'elemento con lo stesso nome di un elemento del gruppo di sostituzione non è fisso (minOccurs maxOccurs < maxOccurs).
- La definizione dell'elemento che fa riferimento al gruppo di sostituzione precede la definizione dell'elemento con lo stesso nome di un elemento del gruppo di sostituzione.
Ad esempio, nello schema seguente il modello di contenuto è ambiguo e dovrebbe causare un errore di compilazione, ma System.Xml compila lo schema senza errori.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:int"/>
<xs:element name="e2" type="xs:int" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Se si tenta di convalidare il codice XML seguente rispetto allo schema precedente, la convalida avrà esito negativo con il messaggio seguente: "L'elemento 'e3' ha un elemento figlio non valido 'e2'". Verrà generata un'eccezione XmlSchemaValidationException .
<e3>
<e2>1</e2>
<e2>2</e2>
</e3>
Per risolvere questo problema, è possibile scambiare le dichiarazioni degli elementi nel documento XSD. Per esempio:
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
diventa questo:
<xs:sequence>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Ecco un altro esempio dello stesso problema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:string"/>
<xs:element name="e2" type="xs:string" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Se si tenta di convalidare il codice XML seguente rispetto allo schema precedente, la convalida avrà esito negativo con l'eccezione seguente: "Eccezione non gestita: System.Xml.Schema.XmlSchemaValidationException: l'elemento el 'e2' non è valido - Il valore 'abc' non è valido in base al relativo tipo di 'http://www.w3.org/2001/XMLSchema:int' dati- La stringa 'abc' non è un valore Int32 valido".
<e3><e2>abc</e2></e3>
Considerazioni relative alla sicurezza
I tipi e i membri nello System.Xml spazio dei nomi si basano sul sistema di sicurezza .NET. Nelle sezioni seguenti vengono illustrati i problemi di sicurezza specifici delle tecnologie XML.
Si noti anche che quando si usano i System.Xml tipi e i membri, se il codice XML contiene dati con potenziali implicazioni sulla privacy, è necessario implementare l'app in modo da rispettare la privacy degli utenti finali.
Accesso esterno
Diverse tecnologie XML possono recuperare altri documenti durante l'elaborazione. Ad esempio, una definizione del tipo di documento (DTD) può risiedere nel documento analizzato. Il DTD può inoltre trovarsi in un documento esterno a cui fa riferimento il documento analizzato. Le tecnologie XSD (XML Schema Definition Language) e XSLT hanno anche la possibilità di includere informazioni da altri file. Queste risorse esterne possono presentare alcuni problemi di sicurezza. Ad esempio, è necessario assicurarsi che l'app recuperi i file solo da siti attendibili e che il file recuperato non contenga dati dannosi.
La XmlUrlResolver classe viene usata 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 classe e specificare l'oggetto XmlResolver da usare. Usare la XmlSecureResolver classe se è necessario aprire una risorsa non controllata o non attendibile. esegue XmlSecureResolver il wrapping di un oggetto XmlResolver e consente di limitare le risorse a cui l'oggetto sottostante XmlResolver ha accesso.
Denial of Service
Gli scenari seguenti sono considerati meno vulnerabili agli attacchi Denial of Service perché le System.Xml classi forniscono un mezzo di protezione da tali attacchi.
Analisi dei dati XML di testo.
Analisi dei dati XML binari se i dati XML binari sono stati generati da Microsoft SQL Server.
Scrittura di documenti e frammenti XML da origini dati nel file system, nei flussi, in un TextWriteroggetto o in StringBuilder.
Caricamento di documenti nell'oggetto DOM (Document Object Model) se si utilizza un XmlReader oggetto e XmlReaderSettings.DtdProcessing si imposta su DtdProcessing.Prohibit.
Esplorazione dell'oggetto DOM.
Gli scenari seguenti non sono consigliati se si è preoccupati per gli attacchi Denial of Service o se si lavora in un ambiente non attendibile.
Elaborazione DTD.
Elaborazione dello schema. Ciò include l'aggiunta di uno schema non attendibile alla raccolta di schemi, la compilazione di uno schema non attendibile e la convalida tramite uno schema non attendibile.
Elaborazione XSLT.
Analisi di qualsiasi flusso arbitrario di dati XML binari forniti dall'utente.
Operazioni DOM come l'esecuzione di query, la modifica, lo spostamento di sottoalberi tra documenti e il salvataggio di oggetti DOM.
Se si è interessati a problemi denial of service o se si gestiscono origini non attendibili, non abilitare l'elaborazione DTD. Questa opzione è disabilitata per impostazione predefinita sugli XmlReader oggetti creati dal XmlReader.Create metodo .
Annotazioni
consente l'elaborazione XmlTextReader DTD per impostazione predefinita. Utilizzare la XmlTextReader.DtdProcessing proprietà per disabilitare questa funzionalità.
Se è abilitata l'elaborazione DTD, è possibile usare la XmlSecureResolver classe per limitare le risorse a cui può accedere.XmlReader È anche possibile progettare l'app in modo che l'elaborazione XML sia vincolata da memoria e tempo. Ad esempio, è possibile configurare i limiti di timeout nell'app ASP.NET.
Considerazioni sull'elaborazione
Poiché i documenti XML possono includere riferimenti ad altri file, è difficile determinare la potenza di elaborazione necessaria per analizzare un documento XML. Ad esempio, i documenti XML possono includere un DTD. Se il DTD contiene entità annidate o modelli di contenuto complessi, potrebbe essere necessario un tempo eccessivo per analizzare il documento.
Quando si usa XmlReader, è possibile limitare le dimensioni del documento che è possibile analizzare impostando la XmlReaderSettings.MaxCharactersInDocument proprietà . È possibile limitare il numero di caratteri risultanti dall'espansione delle entità impostando la XmlReaderSettings.MaxCharactersFromEntities proprietà . Vedere gli argomenti di riferimento appropriati per esempi di impostazione di queste proprietà.
Le tecnologie XSD e XSLT hanno funzionalità aggiuntive che possono influire sulle prestazioni di elaborazione. Ad esempio, è possibile costruire un XML Schema che richiede una notevole quantità di tempo per l'elaborazione quando viene valutata su un documento relativamente piccolo. È anche possibile incorporare blocchi di script all'interno di un foglio di stile XSLT. Entrambi i casi rappresentano una potenziale minaccia alla sicurezza per l'app.
Quando si crea un'app che usa la XslCompiledTransform classe , è necessario tenere presenti gli elementi seguenti e le relative implicazioni:
Lo scripting XSLT è disabilitato per impostazione predefinita. Gli script XSLT devono essere abilitati solo se è necessario il supporto dello script e si lavora in un ambiente completamente attendibile.
La funzione XSLT
document()è disabilitata per impostazione predefinita. Se si abilita ladocument()funzione, limitare le risorse a cui è possibile accedere passando un XmlSecureResolver oggetto al XslCompiledTransform.Transform metodo .Gli oggetti di estensione sono abilitati per impostazione predefinita. Se un XsltArgumentList oggetto che contiene oggetti di estensione viene passato al XslCompiledTransform.Transform metodo , vengono utilizzati gli oggetti di estensione.
I fogli di stile XSLT possono includere riferimenti ad altri file e blocchi di script incorporati. Un utente malintenzionato può sfruttare questo problema fornendo dati o fogli di stile che, quando eseguiti, possono causare l'elaborazione del sistema fino a quando il computer non viene eseguito con risorse scarse.
Le app XSLT eseguite in un ambiente trust misto possono comportare lo spoofing dei fogli di stile. Ad esempio, un utente malintenzionato può caricare un oggetto con un foglio di stile dannoso e consegnarlo a un altro utente che successivamente chiama il XslCompiledTransform.Transform metodo ed esegue la trasformazione.
Questi problemi di sicurezza possono essere mitigati non abilitando la creazione di script o la document() funzione a meno che il foglio di stile non provenga da un'origine attendibile e non accetti XslCompiledTransform oggetti, fogli di stile XSLT o dati di origine XML da un'origine non attendibile.
Gestione delle eccezioni
Le eccezioni generate dai componenti di livello inferiore possono divulgare informazioni sul percorso che non si desidera esporre all'app. Le app devono intercettare le eccezioni ed elaborarle in modo appropriato.