System.Xml Przestrzeń nazw
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia opartą na standardach obsługę przetwarzania kodu XML.
Klasy
NameTable |
Implementuje jednowątkowy XmlNameTableelement . |
UniqueId |
Unikatowy identyfikator zoptymalizowany pod kątem identyfikatorów GUID. |
XmlAttribute |
Reprezentuje atrybut. Prawidłowe i domyślne wartości atrybutu są definiowane w definicji typu dokumentu (DTD) lub schemacie. |
XmlAttributeCollection |
Reprezentuje kolekcję atrybutów, do których można uzyskać dostęp według nazwy lub indeksu. |
XmlBinaryReaderSession |
Umożliwia dynamiczne zarządzanie zoptymalizowanymi ciągami. |
XmlBinaryWriterSession |
Umożliwia używanie słownika dynamicznego do kompresowania typowych ciągów, które pojawiają się w komunikacie i utrzymują stan. |
XmlCDataSection |
Reprezentuje sekcję CDATA. |
XmlCharacterData |
Udostępnia metody manipulowania tekstem, które są używane przez kilka klas. |
XmlComment |
Reprezentuje zawartość komentarza XML. |
XmlConvert |
Koduje i dekoduje nazwy XML oraz udostępnia metody konwertowania między typami środowiska uruchomieniowego języka wspólnego i typami języka definicji schematu XML (XSD). Podczas konwertowania typów danych zwracane wartości są niezależne od ustawień regionalnych. |
XmlDataDocument |
Umożliwia przechowywanie, pobieranie i manipulowanie danymi ustrukturyzowanymi za pomocą relacyjnej DataSetmetody . |
XmlDeclaration |
Reprezentuje węzeł <deklaracji XML ?xml version='1.0'...?>. |
XmlDictionary |
Implementuje słownik używany do optymalizowania implementacji czytnika/zapisywania XML programu Windows Communication Foundation (WCF). |
XmlDictionaryReader |
|
XmlDictionaryReaderQuotas |
Zawiera konfigurowalne wartości przydziału dla elementów XmlDictionaryReaders. |
XmlDictionaryString |
Reprezentuje wpis przechowywany w obiekcie XmlDictionary. |
XmlDictionaryWriter |
Reprezentuje abstrakcyjną klasę, która Windows Communication Foundation (WCF) pochodzi od XmlWriter do serializacji i deserializacji. |
XmlDocument |
Reprezentuje dokument XML. Ta klasa służy do ładowania, weryfikowania, edytowania, dodawania i umieszczania kodu XML w dokumencie. |
XmlDocumentFragment |
Reprezentuje lekki obiekt, który jest przydatny w przypadku operacji wstawiania drzewa. |
XmlDocumentType |
Reprezentuje deklarację typu dokumentu. |
XmlDocumentXPathExtensions |
Udostępnia metody rozszerzeń dla XmlDocument i XmlNode nawigowania po dokumentach. |
XmlElement |
Reprezentuje element. |
XmlEntity |
Reprezentuje deklarację jednostki, taką jak <! JEDNOSTKA... >. |
XmlEntityReference |
Reprezentuje węzeł odwołania do jednostki. |
XmlException |
Zwraca szczegółowe informacje o ostatnim wyjątku. |
XmlImplementation |
Definiuje kontekst zestawu XmlDocument obiektów. |
XmlLinkedNode |
Pobiera węzeł bezpośrednio poprzedzający ten węzeł lub następujący po tym węźle. |
XmlNamedNodeMap |
Reprezentuje kolekcję węzłów, do których można uzyskać dostęp według nazwy lub indeksu. |
XmlNamespaceManager |
Rozpoznaje, dodaje i usuwa przestrzenie nazw do kolekcji i zapewnia zarządzanie zakresami dla tych przestrzeni nazw. |
XmlNameTable |
Tabela obiektów ciągów atomizowanego. |
XmlNode |
Reprezentuje jeden węzeł w dokumencie XML. |
XmlNodeChangedEventArgs |
Dostarcza dane dla zdarzeń NodeChanged, , NodeInsertedNodeChanging, NodeRemoved NodeInsertingi NodeRemoving . |
XmlNodeList |
Reprezentuje uporządkowaną kolekcję węzłów. |
XmlNodeReader |
Reprezentuje czytnik, który zapewnia szybki, niebuforowany dostęp tylko do danych XML w obiekcie XmlNode. |
XmlNotation |
Reprezentuje deklarację notacji, taką jak <! NOTACJA... >. |
XmlParserContext |
Udostępnia wszystkie informacje kontekstowe wymagane przez element XmlReader do analizowania fragmentu XML. |
XmlProcessingInstruction |
Reprezentuje instrukcję przetwarzania, którą kod XML definiuje, aby przechowywać informacje specyficzne dla procesora w tekście dokumentu. |
XmlQualifiedName |
Reprezentuje kwalifikowaną nazwę XML. |
XmlReader |
Reprezentuje czytnik, który zapewnia szybki, niebuforowany, tylko do przodu dostęp do danych XML. |
XmlReaderSettings |
Określa zestaw funkcji do obsługi obiektu utworzonego XmlReader przez metodę Create . |
XmlResolver |
Rozpoznaje zewnętrzne zasoby XML nazwane przez identyfikator URI (Uniform Resource Identifier). |
XmlSecureResolver |
Pomaga zabezpieczyć kolejną implementację XmlResolver programu przez opakowywanie XmlResolver obiektu i ograniczanie zasobów, do których podstawowy XmlResolver obiekt ma dostęp. |
XmlSignificantWhitespace |
Reprezentuje białe znaki między znacznikami w węźle zawartości mieszanej lub białym znakiem w zakresie xml:space= "preserve". Jest to również nazywane znaczącym odstępem. |
XmlText |
Reprezentuje zawartość tekstową elementu lub atrybutu. |
XmlTextReader |
Reprezentuje czytnik, który zapewnia szybki, niebuforowany dostęp tylko do danych XML. Począwszy od .NET Framework 2.0, zalecamy zamiast tego użycie XmlReader klasy. |
XmlTextWriter |
Reprezentuje moduł zapisywania, który zapewnia szybki, niebuforowany, tylko do przodu sposób generowania strumieni lub plików zawierających dane XML zgodne z językiem W3C Extensible Markup Language (XML) 1.0 i przestrzeniami nazw w zaleceniach XML. Począwszy od .NET Framework 2.0, zalecamy zamiast tego użycie XmlWriter klasy. |
XmlUrlResolver |
Rozpoznaje zewnętrzne zasoby XML nazwane przez identyfikator URI (Uniform Resource Identifier). |
XmlValidatingReader |
Reprezentuje czytnik, który udostępnia schemat definicji typu dokumentu (DTD), XML-Data schematu zredukowanego (XDR) oraz walidację języka definicji schematu XML (XSD). Ta klasa jest przestarzała. Począwszy od .NET Framework 2.0, zalecamy użycie XmlReaderSettings klasy i Create metody w celu utworzenia sprawdzania poprawności czytnika XML. |
XmlWhitespace |
Reprezentuje białe odstępy w zawartości elementu. |
XmlWriter |
Reprezentuje moduł zapisujący, który zapewnia szybki, niebuforowany, tylko do przodu sposób generowania strumieni lub plików zawierających dane XML. |
XmlWriterSettings |
Określa zestaw funkcji do obsługi obiektu utworzonego XmlWriter przez metodę Create . |
XmlXapResolver |
Typ XmlXapResolver służy do rozwiązywania zasobów w pakiecie XAP aplikacji Silverlight. |
Interfejsy
IApplicationResourceStreamResolver |
Reprezentuje rozpoznawanie strumienia zasobów aplikacji. |
IFragmentCapableXmlDictionaryWriter |
Zawiera właściwości i metody, które po zaimplementowaniu przez element XmlDictionaryWriterumożliwiają przetwarzanie fragmentów XML. |
IHasXmlNode |
Umożliwia klasie zwracanie elementu XmlNode z bieżącego kontekstu lub położenia. |
IStreamProvider |
Reprezentuje interfejs, który można zaimplementować przez klasy dostarczające strumienie. |
IXmlBinaryReaderInitializer |
Udostępnia metody ponownego inicjowania czytnika binarnego w celu odczytania nowego dokumentu. |
IXmlBinaryWriterInitializer |
Określa wymagania implementacji dla składników zapisywania danych binarnych XML, które pochodzą z tego interfejsu. |
IXmlDictionary |
Element |
IXmlLineInfo |
Udostępnia interfejs umożliwiający klasę zwracania informacji o wierszu i położeniu. |
IXmlMtomReaderInitializer |
Określa wymagania implementacji dla czytników MTOM XML, które pochodzą z tego interfejsu. |
IXmlMtomWriterInitializer |
W przypadku zaimplementowania przez element zapisujący MTOM ten interfejs zapewnia inicjowanie dla zapisu MTOM. |
IXmlNamespaceResolver |
Zapewnia dostęp tylko do odczytu do zestawu mapowań prefiksów i przestrzeni nazw. |
IXmlTextReaderInitializer |
Określa wymagania implementacji dla czytników tekstu XML, które pochodzą z tego interfejsu. |
IXmlTextWriterInitializer |
Określa wymagania implementacji dla składników zapisywania tekstu XML, które pochodzą z tego interfejsu. |
Wyliczenia
ConformanceLevel |
Określa ilość danych wejściowych lub wyjściowych sprawdzania, które XmlReader i XmlWriter obiekty są wykonywane. |
DtdProcessing |
Określa opcje przetwarzania dtd. Wyliczenie DtdProcessing jest używane przez klasę XmlReaderSettings . |
EntityHandling |
Określa sposób XmlTextReader obsługi jednostek lub XmlValidatingReader . |
Formatting |
Określa opcje formatowania dla .XmlTextWriter |
NamespaceHandling |
Określa, czy usunąć zduplikowane deklaracje przestrzeni nazw w obiekcie XmlWriter. |
NewLineHandling |
Określa sposób obsługi podziałów wierszy. |
ReadState |
Określa stan czytnika. |
ValidationType |
Określa typ weryfikacji do wykonania. |
WhitespaceHandling |
Określa sposób obsługi odstępu. |
WriteState |
Określa stan .XmlWriter |
XmlDateTimeSerializationMode |
Określa sposób traktowania wartości czasu podczas konwertowania między ciągiem a DateTime. |
XmlDictionaryReaderQuotaTypes |
Wylicza konfigurowalne wartości przydziału dla elementów XmlDictionaryReaders. |
XmlNamespaceScope |
Definiuje zakres przestrzeni nazw. |
XmlNodeChangedAction |
Określa typ zmiany węzła. |
XmlNodeOrder |
Opisuje kolejność dokumentu węzła w porównaniu z drugim węzłem. |
XmlNodeType |
Określa typ węzła. |
XmlOutputMethod |
Określa metodę używaną do serializacji danych wyjściowych XmlWriter . |
XmlSpace |
Określa bieżący |
XmlTokenizedType |
Reprezentuje typ XML ciągu. Dzięki temu ciąg może być odczytywany jako określony typ XML, na przykład typ sekcji CDATA. |
Delegaci
OnXmlDictionaryReaderClose |
|
XmlNodeChangedEventHandler |
Reprezentuje metodę, która obsługuje NodeChangedzdarzenia , NodeChanging, NodeInserted, NodeInsertingi NodeRemoving NodeRemoved . |
Uwagi
Obsługiwane standardy
Przestrzeń System.Xml nazw obsługuje następujące standardy:
Przestrzenie nazw XML, zarówno na poziomie strumienia, jak i dom
Zobacz sekcję Różnice od specyfikacji W3C w dwóch przypadkach, w których klasy XML różnią się od zaleceń W3C.
Powiązane przestrzenie nazw
.NET udostępnia również inne przestrzenie nazw dla operacji związanych z xml. Aby uzyskać listę, opisy i linki, zobacz System.Xml Namespaces.
Asynchroniczne przetwarzanie kodu XML
Klasy System.Xml.XmlReader i zawierają wiele metod System.Xml.XmlWriter asynchronicznych, które są oparte na modelu programowania asynchronicznego. Te metody można zidentyfikować za pomocą ciągu "Async" na końcu ich nazw. Za pomocą tych metod można napisać kod asynchroniczny podobny do kodu synchronicznego i łatwo migrować istniejący kod synchroniczny do kodu asynchronicznego.
Używaj metod asynchronicznych w aplikacjach, w których występują znaczne opóźnienia strumienia sieci. Unikaj używania asynchronicznych interfejsów API dla operacji odczytu/zapisu strumienia pamięci lub lokalnego strumienia plików. Strumień wejściowy , XmlTextReader i powinien również obsługiwać operacje XmlTextWriter asynchroniczne. W przeciwnym razie wątki będą nadal blokowane przez operacje we/wy.
Nie zalecamy łączenia synchronicznych i asynchronicznych wywołań funkcji, ponieważ możesz zapomnij użyć słowa kluczowego lub użyć synchronicznego interfejsu API, gdy jest to konieczne.
await
Nie należy ustawiać flagi ani na , jeśli nie XmlReaderSettings.Async XmlWriterSettings.Async
true
zamierzasz używać metody asynchronicznej.Jeśli zapomnisz określić słowo kluczowe podczas wywołania metody asynchronicznej, wyniki nie będą deterministyczne: możesz otrzymać oczekiwany wynik lub
await
wyjątek.Gdy obiekt odczytuje duży węzeł tekstowy, może buforować tylko częściową wartość tekstową i zwracać węzeł tekstowy, więc pobieranie właściwości może zostać zablokowane przez operację XmlReader XmlReader.Value we/wy. Użyj metody , aby uzyskać wartość tekstową w trybie asynchronicznym, lub użyj metody , aby odczytać duży blok XmlReader.GetValueAsync XmlReader.ReadValueChunkAsync tekstu we fragmentach.
Jeśli używasz obiektu , wywołaj metodę przed wywołaniem metody , aby uniknąć blokowania operacji XmlWriter XmlWriter.FlushAsync XmlWriter.Close we/wy.
Różnice od specyfikacji W3C
W dwóch przypadkach, które obejmują ograniczenia dotyczące składników schematu grupy modeli, przestrzeń nazw różni się System.Xml od zaleceń W3C.
Spójność w deklaracjach elementów:
W niektórych przypadkach, gdy są używane grupy podstawień, implementacja nie spełnia wymagania "Ograniczenie składnika schematu: spójne deklaracje elementów", które opisano w sekcji Ograniczenia dotyczące składników schematu grupy modeli specyfikacji System.Xml W3C.
Na przykład poniższy schemat zawiera elementy, które mają taką samą nazwę, ale różne typy w tym samym modelu zawartości, i używane są grupy podstawień. Powinno to spowodować błąd, ale System.Xml kompiluje i weryfikuje schemat bez błędów.
<?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>
W tym schemacie typ t3
zawiera sekwencję elementów. Z powodu podstawienia odwołanie do elementu z sekwencji może spowodować element typu lub e1
e1
element typu t1
e2
t2
. Ten drugi przypadek spowoduje sekwencję dwóch elementów, gdzie jeden jest typu , a e2
t2
drugi jest typu xs:int
.
Przypisanie unikatowych cząstek:
W następujących warunkach implementacja nie spełnia warunków "Ograniczenie składnika schematu: przypisanie unikatowych cząstek", które opisano w sekcji Ograniczenia dotyczące składników schematu grupy modeli specyfikacji System.Xml W3C.
Jeden z elementów w grupie odwołuje się do innego elementu.
Element, do których istnieje odwołanie, jest elementem head grupy podstawień.
Grupa podstawień zawiera element o takiej samej nazwie jak jeden z elementów w grupie.
Kardynalność elementu, który odwołuje się do elementu head grupy podstawień i elementu o takiej samej nazwie jak element grupy podstawień, nie jest stała (minOccurs < maxOccurs).
Definicja elementu, który odwołuje się do grupy podstawień, poprzedza definicję elementu o takiej samej nazwie jak element grupy podstawień.
Na przykład w schemacie poniżej model zawartości jest niejednoznaczny i powinien powodować błąd kompilacji, ale kompiluje System.Xml schemat bez błędów.
<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>
Jeśli spróbujesz zweryfikować następujący kod XML względem powyższego schematu, walidacja nie powiedzie się z następującym komunikatem: "Element "e3" ma nieprawidłowy element podrzędny "e2" i zostanie zgłoszony XmlSchemaValidationException wyjątek.
<e3>
<e2>1</e2>
<e2>2</e2>
</e3>
Aby rozwiązać ten problem, można zamienić deklaracje elementów w dokumencie XSD. Na przykład:
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
staje się to:
<xs:sequence>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Oto inny przykład tego samego problemu:
<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>
Jeśli spróbujesz zweryfikować następujący kod XML względem powyższego schematu, walidacja nie powiedzie się z następującym wyjątkiem: "Nieobsługiwany wyjątek: System.Xml.Schema.XmlSchemaValidationException: element el "e2" jest nieprawidłowy — wartość "abc" jest nieprawidłowa zgodnie z jej typem danych — ciąg "abc" nie jest prawidłową wartością 'http://www.w3.org/2001/XMLSchema:int'
Int32".
<e3><e2>abc</e2></e3>
Zagadnienia dotyczące bezpieczeństwa
Typy i elementy członkowskie w przestrzeni System.Xml nazw korzystają z systemu zabezpieczeń .NET. W poniższych sekcjach omówiono problemy z zabezpieczeniami specyficzne dla technologii XML.
Należy również pamiętać, że jeśli używasz typów i elementów członkowskich, jeśli plik XML zawiera dane, które mają potencjalny wpływ na prywatność, musisz zaimplementować aplikację w sposób, który będzie respektował prywatność System.Xml użytkowników końcowych.
Dostęp zewnętrzny
Kilka technologii XML ma możliwość pobierania innych dokumentów podczas przetwarzania. Na przykład definicja typu dokumentu (DTD) może znajdować się w analizowanych dokumentach. DtD może również żyć w dokumencie zewnętrznym, do których odwołuje się analizowany dokument. Technologie języka definicji schematu XML (XSD) i XSLT mają również możliwość dołączania informacji z innych plików. Te zasoby zewnętrzne mogą być związane z pewnymi problemami z zabezpieczeniami. Na przykład należy się upewnić, że aplikacja pobiera pliki tylko z zaufanych witryn i że pobrany plik nie zawiera złośliwych danych.
Klasa jest używana do ładowania dokumentów XML i rozpoznawania zasobów zewnętrznych, takich jak XmlUrlResolver jednostki, identyfikatory DTD lub schematy, oraz dyrektyw importu lub dołączania.
Tę klasę można przesłonić i określić XmlResolver obiekt do użycia. Użyj klasy , jeśli musisz otworzyć zasób, który nie XmlSecureResolver kontrolujesz lub który jest niezaufany. Zawija element i umożliwia ograniczenie zasobów, do których XmlSecureResolver XmlResolver bazowa XmlResolver aplikacja ma dostęp.
Denial of service (odmowa usługi)
Następujące scenariusze są uważane za mniej podatne na ataki typu "odmowa usługi", ponieważ klasy zapewniają środki ochrony System.Xml przed takimi atakami.
Analizowanie danych tekstowych XML.
Analizowanie danych binarnych XML, jeśli dane binarne XML został wygenerowany przez Microsoft SQL Server.
Zapisywanie dokumentów XML i fragmentów ze źródeł danych do systemu plików, strumieni, TextWriter obiektu lub StringBuilder .
Ładowanie dokumentów do obiektu Document Object Model (DOM), jeśli używasz XmlReader obiektu i XmlReaderSettings.DtdProcessing ustawiono na DtdProcessing.Prohibit .
Nawigowanie po obiekcie DOM.
Poniższe scenariusze nie są zalecane, jeśli martwisz się atakami typu "odmowa usługi" lub pracujesz w niezaufanym środowisku.
Przetwarzanie DTD.
Przetwarzanie schematu. Obejmuje to dodawanie niezaufanego schematu do kolekcji schematów, kompilowanie niezaufanego schematu i sprawdzania poprawności przy użyciu niezaufanego schematu.
Przetwarzanie XSLT.
Analizowanie dowolnego strumienia danych binarnych XML dostarczonych przez użytkownika.
Operacje DOM, takie jak wykonywanie zapytań, edytowanie, przenoszenie drzew podrzędnych między dokumentami i zapisywanie obiektów DOM.
Jeśli martwisz się problemami z odmową usługi lub masz do czynienia z niezaufanymi źródłami, nie włączaj przetwarzania DTD. Jest to domyślnie wyłączone w XmlReader przypadku obiektów, które XmlReader.Create tworzy metoda.
Uwaga
Domyślnie XmlTextReader zezwala na przetwarzanie DTD. Użyj właściwości XmlTextReader.DtdProcessing , aby wyłączyć tę funkcję.
Jeśli masz włączone przetwarzanie DTD, możesz użyć klasy , aby ograniczyć zasoby, XmlSecureResolver do których może uzyskać XmlReader dostęp. Możesz również zaprojektować aplikację tak, aby przetwarzanie XML było ograniczone pamięcią i czasem. Na przykład możesz skonfigurować limity czasu w aplikacji ASP.NET aplikacji.
Zagadnienia dotyczące przetwarzania
Ponieważ dokumenty XML mogą zawierać odwołania do innych plików, trudno jest określić, ile mocy obliczeniowej jest wymagane do analizowania dokumentu XML. Na przykład dokumenty XML mogą zawierać dtd. Jeśli dtd zawiera zagnieżdżone jednostki lub modele zawartości złożonej, analizowanie dokumentu może zająć zbyt wiele czasu.
W przypadku korzystania z programu można ograniczyć rozmiar dokumentu, który może XmlReader być analizowany przez ustawienie XmlReaderSettings.MaxCharactersInDocument właściwości . Ustawiając właściwość , można ograniczyć liczbę znaków, które są wynikiem rozwijania XmlReaderSettings.MaxCharactersFromEntities jednostek. Przykłady ustawiania tych właściwości można znaleźć w odpowiednich tematach referencyjnych.
Technologie XSD i XSLT mają dodatkowe możliwości, które mogą mieć wpływ na wydajność przetwarzania. Na przykład istnieje możliwość skonstruowania schematu XML, który wymaga znacznej ilości czasu na przetwarzanie podczas oceny stosunkowo małego dokumentu. Można również osadzać bloki skryptów w arkuszu stylów XSLT. Oba przypadki stanowią potencjalne zagrożenie dla bezpieczeństwa aplikacji.
Podczas tworzenia aplikacji korzystającej z klasy należy pamiętać o następujących elementach XslCompiledTransform i ich implikacjach:
Skrypty XSLT są domyślnie wyłączone. Skrypty XSLT powinny być włączone tylko wtedy, gdy potrzebujesz obsługi skryptów i pracujesz w w pełni zaufanym środowisku.
Funkcja XSLT
document()
jest domyślnie wyłączona. Jeśli włączysz funkcję , ogranicz zasoby, do których można uzyskaćdocument()
dostęp, przekazując XmlSecureResolver obiekt do metody XslCompiledTransform.Transform .Obiekty rozszerzeń są domyślnie włączone. Jeśli XsltArgumentList obiekt, który zawiera obiekty rozszerzenia, zostanie przekazany do XslCompiledTransform.Transform metody , używane są obiekty rozszerzenia.
Arkusze stylów XSLT mogą zawierać odwołania do innych plików i osadzonych bloków skryptów. Złośliwy użytkownik może wykorzystać tę lukę, dostarczając dane lub arkusze stylów, które po wykonaniu mogą spowodować przetwarzanie przez system, dopóki na komputerze nie zabraknie zasobów.
Aplikacje XSLT uruchamiane w środowisku o mieszanym zaufaniu mogą powodować fałszowanie arkuszy stylów. Na przykład złośliwy użytkownik może załadować obiekt ze szkodliwym arkuszem stylów i ująć go do innego użytkownika, który następnie wywołuje metodę i XslCompiledTransform.Transform wykonuje przekształcenie.
Te problemy z zabezpieczeniami można rozwiązać, nie włączając skryptów lub funkcji, chyba że arkusz stylów pochodzi z zaufanego źródła i nie akceptuje obiektów, arkuszy stylów XSLT lub danych źródłowych XML z niezaufanego document()
XslCompiledTransform źródła.
Obsługa wyjątków
Wyjątki zgłaszane przez składniki niższego poziomu mogą ujawniać informacje o ścieżce, które nie mają być widoczne dla aplikacji. Aplikacje muszą przechwytować wyjątki i odpowiednio je przetworzyć.