다음을 통해 공유


System.Xml 네임스페이스

XML 처리를 위한 표준 기반 지원을 제공합니다.

클래스

NameTable

단일 스레드 XmlNameTable을 구현합니다.

UniqueId

GUID용으로 최적화된 고유 식별자입니다.

XmlAttribute

특성을 나타냅니다. 특성에 대해 유효한 값과 기본값은 DTD(문서 형식 정의) 또는 스키마에 정의됩니다.

XmlAttributeCollection

이름이나 인덱스로 액세스할 수 있는 특성의 컬렉션을 나타냅니다.

XmlBinaryReaderSession

최적화된 문자열을 동적 방법으로 관리할 수 있습니다.

XmlBinaryWriterSession

메시지에 나타나며 상태를 유지하는 일반 문자열을 압축하기 위해 동적 사전을 사용할 수 있도록 합니다.

XmlCDataSection

CDATA 섹션을 나타냅니다.

XmlCharacterData

일부 클래스에서 사용하는 텍스트 조작 메서드를 제공합니다.

XmlComment

XML 주석의 내용을 나타냅니다.

XmlConvert

XML 이름을 인코딩 및 디코딩하고 공용 언어 런타임 형식과 XSD(XML 스키마 정의) 언어 형식 사이의 변환 메서드를 제공합니다. 데이터 형식을 변환할 때 반환되는 값은 로캘과 무관합니다.

XmlDataDocument

관계형 DataSet을 통해 구조적 데이터를 저장, 검색 및 조작할 수 있습니다.

XmlDeclaration

XML 선언 노드 <?xml version='1.0'...?>를 나타냅니다.

XmlDictionary

WCF(Windows Communication Foundation)의 XML 판독기/작성기 구현을 최적화하는 데 사용되는 사전을 구현합니다.

XmlDictionaryReader

serialization 및 deserialization을 수행하기 위해 WCF(Windows Communication Foundation)가 XmlReader에서 파생하는 abstract 클래스입니다.

XmlDictionaryReaderQuotas

XmlDictionaryReaders의 구성 가능한 할당량 값을 포함합니다.

XmlDictionaryString

XmlDictionary에 저장된 항목을 나타냅니다.

XmlDictionaryWriter

serialization 및 deserialization을 수행하기 위해 WCF(Windows Communication Foundation)가 XmlWriter에서 파생하는 절대 클래스를 나타냅니다.

XmlDocument

XML 문서를 나타냅니다. 이 클래스를 사용하여 문서에서 XML 로드, 유효성 검사, 편집, 추가 및 위치 지정을 수행할 수 있습니다.

XmlDocumentFragment

트리 삽입 작업에 유용한 경량의 개체를 나타냅니다.

XmlDocumentType

문서 형식 선언을 나타냅니다.

XmlDocumentXPathExtensions

문서 탐색을 위한 XmlDocumentXmlNode의 확장 메서드를 제공합니다.

XmlElement

요소를 나타냅니다.

XmlEntity

<!ENTITY... >와 같은 엔터티 선언을 나타냅니다.

XmlEntityReference

entityreference 노드를 나타냅니다.

XmlException

마지막 예외에 대한 자세한 정보를 반환합니다.

XmlImplementation

XmlDocument 개체 집합에 대한 컨텍스트를 정의합니다.

XmlLinkedNode

이 노드 바로 앞이나 뒤에 있는 노드를 가져옵니다.

XmlNamedNodeMap

이름이나 인덱스로 액세스할 수 있는 노드의 컬렉션을 나타냅니다.

XmlNamespaceManager

컬렉션에 대한 네임스페이스를 확인, 추가 및 제거하고 이 네임스페이스에 대한 범위 관리를 제공합니다.

XmlNameTable

원자화된 문자열 개체의 테이블입니다.

XmlNode

XML 문서의 단일 노드를 나타냅니다.

XmlNodeChangedEventArgs

NodeChanged , NodeChanging , NodeInserted , NodeInserting , NodeRemovedNodeRemoving 이벤트에 대한 데이터를 제공합니다.

XmlNodeList

노드의 정렬된 컬렉션을 나타냅니다.

XmlNodeReader

XmlNode의 XML 데이터에 대한 빠르고 캐시되지 않은 전방 액세스만 제공하는 판독기를 나타냅니다.

XmlNotation

표기법 선언을 나타냅니다(예를 들어, <!NOTATION... >).

XmlParserContext

XmlReader에서 XML 조각을 구문 분석할 때 필요한 모든 컨텍스트 정보를 제공합니다.

XmlProcessingInstruction

문서의 텍스트에 있는 프로세스 관련 정보를 유지하기 위해 정의된 XML 처리 명령을 나타냅니다.

XmlQualifiedName

정규화된 XML 이름을 나타냅니다.

XmlReader

빠르고, 캐시되지 않으며 앞으로만 이동 가능한 XML 데이터 액세스를 제공하는 판독기를 나타냅니다.

XmlReaderSettings

XmlReader 메서드를 사용하여 만든 Create 개체에서 지원할 기능 집합을 지정합니다.

XmlResolver

URI(Uniform Resource Identifier)로 명명된 외부 XML 리소스를 확인합니다.

XmlSecureResolver

XmlResolver 개체를 래핑하고 내부 XmlResolver에서 액세스 가능한 리소스를 제한하여 XmlResolver의 다른 구현을 보호해 줍니다.

XmlSignificantWhitespace

혼합된 내용 노드의 태그 사이에 있는 공백이나 xml:space= 'preserve' 범위 내에 있는 공백을 나타냅니다. 이러한 공백을 유효 공백이라고도 합니다.

XmlText

요소나 특성의 텍스트 내용을 나타냅니다.

XmlTextReader

빠르고, 캐시되지 않으며 앞으로만 이동 가능한 XML 데이터 액세스를 제공하는 판독기를 나타냅니다.

.NET Framework 2.0부터 XmlReader 클래스를 대신 사용하는 것이 좋습니다.

XmlTextWriter

W3C XML(Extensible Markup Language) 1.0 및 Namespaces in XML 권장 사항을 따르는 XML 데이터를 포함하는 스트림이나 파일을 생성하는 빠르고, 캐시되지 않으며, 앞으로만 이동 가능한 방법을 제공하는 작성기를 나타냅니다.

.NET Framework 2.0부터 XmlWriter 클래스를 대신 사용하는 것이 좋습니다.

XmlUrlResolver

URI(Uniform Resource Identifier)로 명명된 외부 XML 리소스를 확인합니다.

XmlValidatingReader

DTD(문서 종류 정의), XDR(XML-Data Reduced) 스키마 및 XSD(XML 스키마 정의 언어)의 유효성 검사를 제공하는 판독기를 나타냅니다.

이 클래스는 사용되지 않습니다. .NET Framework 2.0으로 시작하여 유효성 검사 XML 판독기를 만들려면 XmlReaderSettings 클래스 및 Create 메서드를 사용하는 것이 좋습니다.

XmlWhitespace

요소 내용에 있는 공백을 나타냅니다.

XmlWriter

XML 데이터가 포함된 스트림 또는 파일을 생성할 수 있도록 빠르고, 앞으로만 이동 가능하고, 캐시되지 않은 방법을 제공하는 작성기를 나타냅니다.

XmlWriterSettings

XmlWriter 메서드를 사용하여 만든 Create 개체에서 지원할 기능 집합을 지정합니다.

XmlXapResolver

XmlXapResolver 형식은 Silverlight 애플리케이션의 XAP 패키지에서 리소스를 확인하는 데 사용됩니다.

인터페이스

IApplicationResourceStreamResolver

애플리케이션 리소스 스트림 확인자를 나타냅니다.

IFragmentCapableXmlDictionaryWriter

XmlDictionaryWriter에 의한 구현 시 XML 조각의 처리를 허용하는 속성 및 메서드를 포함합니다.

IHasXmlNode

클래스가 현재 컨텍스트나 위치에서 XmlNode를 반환할 수 있습니다.

IStreamProvider

스트림을 제공하는 클래스에서 구현할 수 있는 인터페이스를 나타냅니다.

IXmlBinaryReaderInitializer

이 문서를 읽도록 이진 판독기를 다시 초기화하기 위한 메서드를 제공합니다.

IXmlBinaryWriterInitializer

이 인터페이스로부터 파생되는 XML 이진 작성기에 대한 구현 요구 사항을 지정합니다.

IXmlDictionary

XML 사전이 XmlDictionaryReaderXmlDictionaryWriter 구현에서 사용되도록 구현해야 하는 계약을 정의하는 interface입니다.

IXmlLineInfo

클래스에서 줄과 위치 정보를 반환할 수 있는 인터페이스를 제공합니다.

IXmlMtomReaderInitializer

이 인터페이스에서 파생되는 XML MTOM 판독기에 대한 구현 요구 사항을 지정합니다.

IXmlMtomWriterInitializer

MTOM 작성기에 의한 구현 시 이 인터페이스를 사용하면 MTOM 작성기가 초기화됩니다.

IXmlNamespaceResolver

접두사 및 네임스페이스 매핑 집합에 읽기 전용으로 액세스하는 데 사용됩니다.

IXmlTextReaderInitializer

이 인터페이스에서 파생되는 XML 텍스트 판독기에 대한 구현 요구 사항을 지정합니다.

IXmlTextWriterInitializer

이 인터페이스에서 파생되는 XML 텍스트 작성기에 대한 구현 요구 사항을 지정합니다.

열거형

ConformanceLevel

만들어진 XmlReaderXmlWriter 개체에서 수행할 입력 또는 출력 검사 수준을 지정합니다.

DtdProcessing

DTD를 처리하기 위한 옵션을 지정합니다. DtdProcessing 열거형은 XmlReaderSettings 클래스에서 사용됩니다.

EntityHandling

XmlTextReaderXmlValidatingReader에서 엔터티를 처리하는 방법을 지정합니다.

Formatting

XmlTextWriter에 대해 형식 지정 옵션을 지정합니다.

NamespaceHandling

XmlWriter에서 중복된 네임스페이스 선언을 제거할지 여부를 지정합니다.

NewLineHandling

줄 바꿈을 처리하는 방법을 지정합니다.

ReadState

판독기의 상태를 지정합니다.

ValidationType

실행할 유효성 검사의 형식을 지정합니다.

WhitespaceHandling

공백을 처리하는 방법을 지정합니다.

WriteState

XmlWriter의 상태를 지정합니다.

XmlDateTimeSerializationMode

문자열과 DateTime 사이에 변환할 때 시간 값을 처리하는 방법을 지정합니다.

XmlDictionaryReaderQuotaTypes

XmlDictionaryReaders의 구성 가능한 할당량 값을 열거합니다.

XmlNamespaceScope

네임스페이스 범위를 정의합니다.

XmlNodeChangedAction

노드 변경 형식을 지정합니다.

XmlNodeOrder

두 번째 노드와 비교하여 노드의 문서 순서를 설명합니다.

XmlNodeType

노드 형식을 지정합니다.

XmlOutputMethod

XmlWriter 출력을 serialize하는 데 사용되는 메서드를 지정합니다.

XmlSpace

현재 xml:space 범위를 지정합니다.

XmlTokenizedType

문자열의 XML 형식을 나타냅니다. 이 클래스를 사용하면 CDATA 섹션 형식과 같은 특정 XML 형식으로 문자열을 읽을 수 있습니다.

대리자

OnXmlDictionaryReaderClose

판독기를 닫을 때 콜백 메서드에 대한 delegate입니다.

XmlNodeChangedEventHandler

NodeChanged , NodeChanging , NodeInserted , NodeInserting , NodeRemovedNodeRemoving 이벤트를 처리하는 메서드를 나타냅니다.

설명

지원 되는 표준

System.Xml 네임 스페이스는 이러한 표준을 지원 합니다.

섹션을 참조 하세요 W3C 사양에서 차이 XML 클래스는 W3C 권장 사항에서 서로 다른 두 가지 경우에 대 한 합니다.

.NET은 XML 관련 작업에 대한 다른 네임스페이스도 제공합니다. 목록, 설명 및 링크는 System.Xml 네임스페이스를 참조하세요.

XML을 비동기적으로 처리

System.Xml.XmlWriter 클래스에는 System.Xml.XmlReader 비동기 프로그래밍 모델을 기반으로 하는 여러 비동기 메서드가 포함됩니다. 이러한 메서드는 해당 이름의 끝에 "Async" 문자열에서 식별할 수 있습니다. 이러한 메서드를 사용 하 여 동기 코드에는 비동기 코드를 작성할 수 있습니다 하 고 기존 동기 코드 비동기 코드를 쉽게 마이그레이션할 수 있습니다.

  • 비동기 메서드를 사용 하 여 앱에서 상당한 네트워크 스트림 대기 시간이 부족 합니다. 메모리 스트림 또는 로컬 파일 스트림 읽기/쓰기 작업에 대 한 비동기 Api를 사용 하지 마십시오. 입력된 스트림에 XmlTextReader, 및 XmlTextWriter 비동기 작업에도 지원 해야 합니다. 그렇지 않으면 스레드 여전히 I/O 작업에 의해 차단 됩니다.

  • 사용 하지 않을 수 있으므로 동기 및 비동기 함수 호출, 혼합 권장 하지는 await 키워드 또는 비동기 항목을 반드시 동기 API 사용 합니다.

  • 설정 하지 않으면 합니다 XmlReaderSettings.Async 또는 XmlWriterSettings.Async 플래그를 true 비동기 메서드를 사용 하지 않으려는 경우.

  • 지정 하지 않을 경우는 await 키워드는 비동기 메서드를 호출할 때 결과 비 결정적인: 예상한 결과 또는 예외가 표시 될 수 있습니다.

  • 경우는 XmlReader 개체 큰 텍스트 노드를 읽고, 부분적인 텍스트 값만 캐시 수 고 따라서 검색 하 고 텍스트 노드를 반환 합니다 XmlReader.Value 속성 I/O 작업으로 차단 될 수 있습니다. 사용 합니다 XmlReader.GetValueAsync 비동기 모드에서는 텍스트 값을 가져오거나 사용 하는 메서드는 XmlReader.ReadValueChunkAsync 청크로 메서드 큰 텍스트 읽기를 차단 합니다.

  • 사용 하는 경우는 XmlWriter 개체를 호출 합니다 XmlWriter.FlushAsync 메서드를 호출 하기 전에 XmlWriter.Close I/O 작업을 차단 하지 않도록 합니다.

W3C 사양에서 차이

모델 그룹 스키마 구성 요소에 대 한 제약 조건을 포함 하는 두 가지 경우에는 System.Xml 네임 스페이스는 W3C 권장 사항에서 다릅니다.

요소 선언에서 일관성.

경우에 따라 대체 그룹이 사용 되는 경우는 System.Xml 구현의 "스키마 구성 요소 제약 조건:: Element Declarations Consistent를"에 설명 된 맞지는 모델 그룹 스키마 구성 요소에 대 한 제약 조건 W3C 사양의 섹션입니다.

예를 들어 다음 스키마에는 동일한 이름을 가진 요소가 포함 되어 있습니다. 하지만 동일한 콘텐츠 모델 및 대체 그룹에서 서로 다른 형식이 사용 됩니다. 이로 인해 오류가 발생해야 하지만 System.Xml은 오류 없이 스키마의 컴파일과 유효성 검사를 수행합니다.

<?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>

이 스키마에서 t3 형식에는 요소의 시퀀스가 포함되어 있습니다. 대체 때문에 시퀀스에서 e1 요소를 참조하면 e1 형식의 t1 요소나 e2 형식의 t2 요소가 생성될 수 있습니다. 후자의 두 시퀀스로 인해 e2 요소를 형식 중 하나인 t2 고 다른 하나는 형식의 xs:int.

Unique particle attribution:

다음 조건 합니다 System.Xml 구현에는 "스키마 구성 요소 제약 조건:: Unique Particle Attribution,"에 설명 된 맞지 합니다 모델 그룹 스키마 구성 요소에 대 한 제약 조건을 섹션 W3C 사양의 합니다.

  • 그룹의 요소 중 하나가 다른 요소를 참조합니다.

  • 참조된 요소가 대체 그룹의 head 요소입니다.

  • 대체 그룹에 그룹의 요소 중 하 나와 이름이 같은 요소가 포함 되어 있습니다.

  • 대체 그룹 헤드 요소를 참조하는 요소의 카디널리티와 대체 그룹 요소와 이름이 같은 요소는 고정되지 않습니다(minOccurs < maxOccurs).

  • 대체 그룹을 참조 하는 요소의 정의 대체 그룹 요소 이름이 같은 요소의 정의 앞에 옵니다.

예를 들어, 아래의 스키마에서 콘텐츠 모델은 모호하며 컴파일 오류를 발생시켜야 하지만 System.Xml은 오류 없이 스키마를 컴파일합니다.

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

다음 메시지와 함께 유효성 검사 실패 위의 스키마에 대해 다음 XML의 유효성을 검사 하려는 경우: "'e3' 요소에 잘못 된 자식 요소 'e2'"과 XmlSchemaValidationException 예외가 throw 됩니다.

<e3>
  <e2>1</e2>
  <e2>2</e2>
</e3>

이 문제를 해결 하려면 XSD 문서에서 요소 선언을 바꿀 수 있습니다. 예를 들면 다음과 같습니다.

<xs:sequence>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

다음과 같이 바꿉니다.

<xs:sequence>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

동일한 문제의 다른 예제는 다음과 같습니다.

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

위의 스키마에 대해 다음 XML의 유효성을 검사하려고 하면 "처리되지 않은 예외: System.Xml 예외로 유효성 검사가 실패합니다. Schema.XmlSchemaValidationException: 'e2' el 요소가 잘못되었습니다. 데이터 형식 'http://www.w3.org/2001/XMLSchema:int' 에 따라 'abc' 값이 잘못되었습니다. 문자열 'abc'는 유효한 Int32 값이 아닙니다."

<e3><e2>abc</e2></e3>

보안 고려 사항

형식 및 멤버를 System.Xml 네임 스페이스에 의존 합니다 .NET 보안 시스템입니다. 다음 섹션에서는 XML 기술과 관련 된 보안 문제에 설명 합니다.

또한 사용 하는 경우 유의 합니다 System.Xml 최종 사용자의 개인 정보를 존중 하는 방식으로 앱을 구현 해야 하는 형식 및 멤버를 XML 잠재적 개인 정보 보호가 포함 된 데이터를 포함 하는 경우.

외부 액세스

여러 XML 기술은 처리 중 다른 문서를 검색하는 기능을 갖추고 있습니다. 예를 들어, 구문 분석 중인 문서에 DTD(문서 종류 정의)가 있을 수 있습니다. 또한 구문 분석 중인 문서에 참조된 외부 문서에 DTD가 있을 수도 있습니다. XSD(XML 스키마 정의 언어) 및 XSLT 기술에도 다른 파일의 정보를 포함할 수 있는 기능이 있습니다. 이러한 외부 리소스에는 몇 가지 보안 문제가 발생할 수 있습니다. 예를 들어, 신뢰할 수 있는 사이트 에서만에서 파일을 검색 하는 앱 및 악의적인 데이터가 포함 되지 않은 파일 검색 되는지 확인 해야 합니다.

XmlUrlResolver 클래스는 XML 문서를 로드 하 고 엔터티, Dtd 또는 스키마와 같은 외부 리소스를 확인 하 고 가져오기 또는 include 지시문에 사용 됩니다.

이 클래스를 재정의 하 고 지정할 수는 XmlResolver 사용할 개체입니다. 제어하지 못하거나 신뢰할 수 없는 리소스를 열어야 하는 경우 XmlSecureResolver 클래스를 사용합니다. XmlSecureResolverXmlResolver를 래핑하며 원본으로 사용하는 XmlResolver가 액세스하는 리소스를 제한할 수 있습니다.

서비스 거부

System.Xml 클래스를 사용하여 서비스 거부 공격으로부터 보호할 수 있으므로 다음 시나리오는 서비스 거부 공격에 대해 덜 취약한 것으로 간주됩니다.

  • 텍스트 XML 데이터를 구문 분석합니다.

  • 이진 XML 데이터를 Microsoft SQL Server에서 생성 된 경우 이진 XML 데이터를 구문 분석 합니다.

  • 데이터 소스에서 파일 시스템, 스트림, TextWriter 또는 StringBuilder로 XML 문서 및 조각을 씁니다.

  • XmlReader 개체 및 XmlReaderSettings.DtdProcessing로 설정된 DtdProcessing.Prohibit를 사용하는 경우 DOM(문서 개체 모델) 개체에 문서를 로드합니다.

  • DOM 개체를 탐색합니다.

서비스 거부 공격을 염려하거나 신뢰할 수 없는 환경에서 작업하는 경우 다음 시나리오를 사용하지 않는 것이 좋습니다.

  • DTD를 처리합니다.

  • 스키마를 처리합니다. 여기에는 신뢰할 수 없는 스키마를 스키마 컬렉션에 추가하고 신뢰할 수 없는 스키마를 컴파일하며 신뢰할 수 없는 스키마를 사용하여 유효성을 검사하는 작업이 포함됩니다.

  • XSLT를 처리합니다.

  • 사용자가 제공한 이진 XML 데이터에서 임의의 스트림을 구문 분석합니다.

  • 하위 트리 쿼리, 편집, 문서 간 이동 및 DOM 개체 저장 등의 DOM 작업을 수행합니다.

서비스 거부 문제를 염려 하거나 신뢰할 수 없는 소스를 사용 하 여 처리 하는 경우에 DTD 처리를 사용 하지 마십시오. 이 기본적으로 해제 XmlReader 개체는 XmlReader.Create 메서드를 만듭니다.

참고

XmlTextReader에서는 기본적으로 DTD 처리를 허용합니다. 이 기능을 비활성화하려면 XmlTextReader.DtdProcessing 속성을 사용합니다.

DTD 처리를 설정한 경우 사용할 수 있습니다 합니다 XmlSecureResolver 리소스를 제한 하는 클래스는를 XmlReader 액세스할 수 있습니다. 또한 XML 처리에 필요한 메모리 및 시간을 제한할 수 있도록 앱을 디자인할 수 있습니다. 예를 들어, ASP.NET 앱의 시간 제한 한도 구성할 수 있습니다.

처리 고려 사항

XML 문서에 다른 파일에 대한 참조를 삽입할 수 있으므로 XML 문서를 구문 분석하는 데 필요한 처리 능력을 결정하기가 어렵습니다. 예를 들어, XML 문서에 DTD가 포함될 수 있습니다. DTD에 중첩된 엔터티 또는 복합 내용 모델이 포함된 경우 문서를 구문 분석하는 데 엄청난 시간일 걸릴 수 있습니다.

XmlReader를 사용할 때 XmlReaderSettings.MaxCharactersInDocument 속성을 설정하여 구문 분석될 수 있는 문서 크기를 제한할 수 있습니다. XmlReaderSettings.MaxCharactersFromEntities 속성을 설정하여 확장 엔터티의 결과인 문자 수를 제한할 수 있습니다. 이러한 속성 설정 예제를 보려면 적절한 참조 항목을 참고하십시오.

XSD 및 XSLT 기술에는 처리 성능에 영향을 줄 수 있는 추가 기능이 있습니다. 예를 들어, 상대적으로 작은 문서에서 평가되는 경우 처리하는 데 많은 시간이 필요한 XML 스키마를 만들 수 있습니다. 또한 XSLT 스타일시트에 스크립트 블록을 포함할 수도 있습니다. 두 경우 모두 앱에 잠재적인 보안 위협을 초래 합니다.

사용 하는 앱을 만들 때의 XslCompiledTransform 클래스에 다음 항목 및 해당 구현에 대해 알고 있어야 합니다.

  • XSLT 스크립트는 기본적으로 비활성화되어 있습니다. XSLT 스크립트는 스크립트 지원이 필요하거나 완전히 신뢰할 수 있는 환경에서 작업하는 경우에만 활성화해야 합니다.

  • XSLT document() 함수는 기본적으로 비활성화되어 있습니다. document() 함수를 활성화하는 경우 XmlSecureResolver 개체를 XslCompiledTransform.Transform 메서드에 전달하여 액세스할 수 있는 리소스를 제한합니다.

  • 확장명 개체는 기본적으로 활성화되어 있습니다. 확장 개체가 포함된 XsltArgumentList 개체를 XslCompiledTransform.Transform 메서드에 전달하면 이 확장 개체가 사용됩니다.

  • XSLT 스타일시트에는 다른 파일에 대한 참조 및 포함 스크립트 블록이 포함될 수 있습니다. 악의적인 사용자는 이 스타일시트를 실행할 경우 컴퓨터 리소스가 부족할 때까지 시스템에서 처리하게 만들 수 있는 데이터 또는 스타일시트를 제공하여 악용할 수 있습니다.

  • 혼합된 신뢰 환경에서 실행 되는 XSLT 앱 스타일 시트가 스푸핑될 발생할 수 있습니다. 예를 들어, 악의적인 사용자는 해로운 스타일시트가 포함된 개체를 로드한 후 XslCompiledTransform.Transform 메서드를 호출하고 변형을 실행할 다른 사용자에게 전달할 수 있습니다.

신뢰할 수 있는 소스에서 스타일시트를 가져오지 않은 경우 스크립트 또는 document() 함수를 비활성화하여 이러한 보안 문제를 완화하거나 신뢰할 수 없는 소스로부터 XslCompiledTransform 개체, XSLT 스타일시트 또는 XML 소스 데이터를 차단하여 완화할 수 있습니다.

예외 처리

낮은 수준의 구성 요소에서 throw 된 예외는 앱에 노출 하지 않을 경로 정보가 노출 될 수 있습니다. 응용 프로그램 예외를 catch 하 고 적절 하 게 처리 해야 합니다.

추가 정보