System.Xml
TOC
콘텐츠의 테이블 축소
콘텐츠의 테이블 확장
이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

System.Xml 네임스페이스

 

System.Xml 네임스페이스는 XML 처리를 위한 표준 기반 지원을 제공합니다.

클래스설명
System_CAPS_pubclassNameTable

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

System_CAPS_pubclassUniqueId

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

System_CAPS_pubclassXmlAttribute

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

System_CAPS_pubclassXmlAttributeCollection

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

System_CAPS_pubclassXmlBinaryReaderSession

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

System_CAPS_pubclassXmlBinaryWriterSession

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

System_CAPS_pubclassXmlCDataSection

CDATA 섹션을 나타냅니다.

System_CAPS_pubclassXmlCharacterData

몇 가지 클래스에서 사용되는 텍스트 조작 메서드를 제공합니다.

System_CAPS_pubclassXmlComment

XML 주석의 콘텐츠를 나타냅니다.

System_CAPS_pubclassXmlConvert

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

System_CAPS_pubclassXmlDataDocument

사용되지 않습니다.구조적 데이터 저장, 검색 및 관계형 통해 조작를 DataSet합니다.

System_CAPS_pubclassXmlDeclaration

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

System_CAPS_pubclassXmlDictionary

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

System_CAPS_pubclassXmlDictionaryReader

abstract 클래스는 WCF(Windows Communication Foundation) 에서 파생 XmlReader 직렬화 및 역직렬화 합니다.

System_CAPS_pubclassXmlDictionaryReaderQuotas

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

System_CAPS_pubclassXmlDictionaryString

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

System_CAPS_pubclassXmlDictionaryWriter

추상 나타냅니다 클래스 WCF(Windows Communication Foundation) 에서 파생 XmlWriter 직렬화 및 역직렬화 합니다.

System_CAPS_pubclassXmlDocument

XML 문서를 나타냅니다.

이 클래스를 사용하여 문서에서 XML 로드, 유효성 검사, 편집, 추가 및 위치 지정을 수행할 수 있습니다. 예를 보려면 이 페이지의 Remarks 섹션을 참조하세요.

System_CAPS_pubclassXmlDocumentFragment

트리 삽입 작업에 유용한 간단한 개체를 나타냅니다.

System_CAPS_pubclassXmlDocumentType

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

System_CAPS_pubclassXmlElement

요소를 나타냅니다.

System_CAPS_pubclassXmlEntity

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

System_CAPS_pubclassXmlEntityReference

엔터티 참조 노드를 나타냅니다.

System_CAPS_pubclassXmlException

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

System_CAPS_pubclassXmlImplementation

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

System_CAPS_pubclassXmlLinkedNode

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

System_CAPS_pubclassXmlNamedNodeMap

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

System_CAPS_pubclassXmlNamespaceManager

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

System_CAPS_pubclassXmlNameTable

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

System_CAPS_pubclassXmlNode

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

System_CAPS_pubclassXmlNodeChangedEventArgs

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

System_CAPS_pubclassXmlNodeList

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

System_CAPS_pubclassXmlNodeReader

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

System_CAPS_pubclassXmlNotation

와 같이 주석 선언을 나타냅니다 <! 표기법... >.

System_CAPS_pubclassXmlParserContext

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

System_CAPS_pubclassXmlProcessingInstruction

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

System_CAPS_pubclassXmlQualifiedName

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

System_CAPS_pubclassXmlReader

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

이 유형에 대 한.NET Framework 소스 코드를 찾아보려면 참조는 Reference Source합니다.

System_CAPS_pubclassXmlReaderSettings

지원할 기능 집합을 지정 된 XmlReader 에서 만든 개체는 Create 메서드.

System_CAPS_pubclassXmlResolver

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

System_CAPS_pubclassXmlSecureResolver

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

System_CAPS_pubclassXmlSignificantWhitespace

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

System_CAPS_pubclassXmlText

요소나 특성의 텍스트 콘텐츠를 나타냅니다.

System_CAPS_pubclassXmlTextReader

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

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

System_CAPS_pubclassXmlTextWriter

스트림 또는 W3C Extensible Markup Language (XML) 1.0 및 XML 권장 사항의에서 네임 스페이스에 맞는 XML 데이터를 포함 하는 파일을 생성 하는 빠르고 캐시 되지 않은, 정방향 전용 방법을 제공 하는 작성기를 나타냅니다.

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

System_CAPS_pubclassXmlUrlResolver

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

System_CAPS_pubclassXmlValidatingReader

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

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

System_CAPS_pubclassXmlWhitespace

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

System_CAPS_pubclassXmlWriter

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

System_CAPS_pubclassXmlWriterSettings

지원할 기능 집합을 지정 된 XmlWriter 에서 만든 개체는 XmlWriter.Create 메서드.

System_CAPS_pubclassXmlXapResolver

사용되지 않습니다.XmlXapResolver 형식 Silverlight 응용 프로그램의 XAP 패키지에 리소스를 확인 하는 데 사용 됩니다.

인터페이스설명
System_CAPS_pubinterfaceIApplicationResourceStreamResolver

사용되지 않습니다.응용 프로그램 리소스 스트림 해결을 프로그램을 나타냅니다.

System_CAPS_pubinterfaceIFragmentCapableXmlDictionaryWriter

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

System_CAPS_pubinterfaceIHasXmlNode

반환 하는 클래스를 사용 하면 한 XmlNode 는 현재 컨텍스트 또는 위치에서.

System_CAPS_pubinterfaceIStreamProvider

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

System_CAPS_pubinterfaceIXmlBinaryReaderInitializer

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

System_CAPS_pubinterfaceIXmlBinaryWriterInitializer

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

System_CAPS_pubinterfaceIXmlDictionary

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

System_CAPS_pubinterfaceIXmlLineInfo

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

System_CAPS_pubinterfaceIXmlMtomReaderInitializer

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

System_CAPS_pubinterfaceIXmlMtomWriterInitializer

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

System_CAPS_pubinterfaceIXmlNamespaceResolver

접두사 및 네임스페이스 매핑 집합에 대한 읽기 전용 액세스를 제공합니다.

System_CAPS_pubinterfaceIXmlTextReaderInitializer

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

System_CAPS_pubinterfaceIXmlTextWriterInitializer

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

대리자설명
System_CAPS_pubdelegateOnXmlDictionaryReaderClose

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

System_CAPS_pubdelegateXmlNodeChangedEventHandler

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

열거형설명
System_CAPS_pubenumConformanceLevel

입력 또는 출력 검사 하는 양을 지정 XmlReaderXmlWriter 개체를 수행 합니다.

System_CAPS_pubenumDtdProcessing

DTD를 처리하기 위한 옵션을 지정합니다. DtdProcessing 열거형을 사용 하 여는 XmlReaderSettings 클래스입니다.

System_CAPS_pubenumEntityHandling

지정 방법을 XmlTextReader 또는 XmlValidatingReader 엔터티를 처리 합니다.

System_CAPS_pubenumFormatting

에 대 한 서식 옵션을 지정 된 XmlTextWriter합니다.

System_CAPS_pubenumNamespaceHandling

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

System_CAPS_pubenumNewLineHandling

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

System_CAPS_pubenumReadState

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

System_CAPS_pubenumValidationType

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

System_CAPS_pubenumWhitespaceHandling

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

System_CAPS_pubenumWriteState

XmlWriter의 상태를 지정합니다.

System_CAPS_pubenumXmlDateTimeSerializationMode

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

System_CAPS_pubenumXmlDictionaryReaderQuotaTypes

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

System_CAPS_pubenumXmlNamespaceScope

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

System_CAPS_pubenumXmlNodeChangedAction

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

System_CAPS_pubenumXmlNodeOrder

두 번째 노드에 비교하는 노드의 문서 순서에 대해 설명합니다.

System_CAPS_pubenumXmlNodeType

노드의 형식을 지정합니다.

System_CAPS_pubenumXmlOutputMethod

Serialize 하는 데 사용 되는 방법은 지정 된 XmlWriter 출력 합니다.

System_CAPS_pubenumXmlSpace

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

System_CAPS_pubenumXmlTokenizedType

문자열에 대 한 XML 형식을 나타냅니다. 따라서 문자열을 CDATA 섹션 형식 예를 들어 특정 XML 형식으로 읽을 수 있습니다.

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

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

또한.NET Framework는 XML 관련 작업에 대 한 다른 네임 스페이스를 제공합니다. 목록, 설명 및 링크를 실행 하는 것에 대 한 참조는 System.Xml Namespaces 웹 페이지입니다.

System.Xml.XmlReaderSystem.Xml.XmlWriter 다양 한 기반으로 하는 비동기 메서드를 포함 하는 클래스는 합니다. 이러한 메서드는 문자열의 이름 끝에 "Async"으로 식별할 수 있습니다. 이러한 메서드를 사용 동기 코드와 비슷한 비동기 코드를 작성할 수 있으며 기존 동기 코드 비동기 코드를 쉽게 마이그레이션할 수 있습니다.

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

  • 권장 하지 않습니다 혼합 동기 및 비동기 함수 호출을 사용 하 여 분실할 수 때문에 await 키워드 또는 비동기 해야만 하는 동기 API 사용 합니다.

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

  • 지정 하지 않으면는 await 키워드는 비동기 메서드를 호출 하면 결과 명확 하지 않은: 예상 결과 나 예외가 발생할 수 있습니다.

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

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

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

요소 선언에 대 한 일관성:

대체 그룹을 사용 하면 일부 경우에는 System.Xml 는 "스키마 구성 요소 제약 조건:: Element Declarations Consistent를"에 설명 된 구현에 맞지 않는 Constraints on Model Group Schema Components 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,"에 설명 된 만족 하지 않는 Constraints on Model Group Schema Components W3C 사양의 섹션입니다.

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

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

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

  • 대체 그룹 요소를 수정 하지 않으면 대체 그룹 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' 요소가 잘못 됨-'abc' 값의 데이터 형식 ' http://www.w3.org/2001/XMLSchema:int' 올바르지 않습니다.-'abc' 문자열은 유효한 Int32 값이 아닙니다." \

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

형식과 멤버는 System.Xml 네임 스페이스에 의존는 합니다. 다음 단원에서는 XML 기술과 관련 된 보안 문제에 설명 합니다. 자세한 내용은 특정 클래스와 언급 했 듯이 멤버를 참조 하 고 방문는 XML Developer Center 기술 정보, 다운로드, 뉴스 그룹 및 XML 개발자를 위한 기타 리소스.

또한 사용 하는 경우 유의 System.Xml 는 최종 사용자의 개인 정보를 존중 하는 방식에서 응용 프로그램을 구현 해야 하는 형식 및 멤버를 XML에 개인 데이터를 포함 합니다.

외부 액세스

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

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

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

서비스 거부

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

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

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

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

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

  • DOM 개체를 탐색합니다.

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

  • DTD를 처리합니다.

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

  • XSLT를 처리합니다.

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

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

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

System_CAPS_note참고

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

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

처리 고려 사항

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

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

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

사용 하는 응용 프로그램을 만드는 경우는 XslCompiledTransform 클래스에 다음 항목 및 그 의미에 대해 알고 있어야 합니다.

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

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

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

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

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

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

예외 처리

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

맨 위로 이동
표시:
© 2016 Microsoft