System.Xml Przestrzeń nazw

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

abstract Klasa, z XmlReader którą pochodzi Windows Communication Foundation (WCF) do wykonywania serializacji i deserializacji.

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 interface definiujący kontrakt, który musi być implementowany przez słownik Xml, aby był używany przez XmlDictionaryReader implementacje i XmlDictionaryWriter .

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 xml:space zakres.

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

delegate metoda wywołania zwrotnego podczas zamykania czytnika.

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:

Zobacz sekcję Różnice od specyfikacji W3C w dwóch przypadkach, w których klasy XML różnią się od zaleceń W3C.

.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ć.

Zobacz też