외부 리소스 확인

XmlDocument 클래스는 XmlDocumentXmlResolver 속성을 사용하여 외부 DTD(문서 종류 정의), 엔터티 및 스키마와 같이 XML 데이터에 인라인으로 들어 있지 않은 리소스를 찾습니다. 이러한 항목은 네트워크나 로컬 드라이브에 있을 수 있으며 URI(Uniform Resource Identifier)로 식별할 수 있습니다. 따라서 XmlDocument로 문서에 있는 EntityReference 노드를 확인하고 외부 DTD나 스키마에 따라 문서의 유효성을 검사할 수 있습니다.

완전 신뢰 XmlDocument

XmlResolver 속성은 XmlDocument.Load 메서드의 기능에 영향을 줍니다. 다음 표에서는 XmlDocument 개체가 완전히 신뢰될 때 XmlDocument.XmlResolver 속성이 작동하는 방식을 보여줍니다. 다음 표에서는 Load의 입력이 TextReader, String, Stream 또는 URI일 경우의 XmlDocument.Load 메서드를 보여줍니다. XmlDocumentXmlReader에서 로드할 경우 이 표의 내용이 Load 메서드에 적용되지 않습니다.

XmlResolver 속성 함수 주의
속성은 이전에 생성되었으며 사용자가 이미 속성을 설정한XmlResolver 클래스로 설정됩니다. XmlDocument는 파일 이름을 확인하고 DTD, 엔터티, 스키마 등의 외부 리소스에 대한 참조를 확인하기 위해 제공되는 XmlResolver를 사용합니다.

XmlDocument에서 노드를 추가하거나 편집할 때 필요한 외부 리소스를 확인할 때도 XmlResolver가 사용됩니다.
XmlDocument에 제공된 XmlResolver는 외부 리소스를 찾아 확인해야 할 때마다 사용되는 확인자입니다.
이 속성은 null(Microsoft Visual Basic .NET에서는 Nothing)로 설정됩니다. 외부 스키마나 DTD를 찾는 등 외부 리소스가 필요한 기능은 지원되지 않습니다. 외부 엔터티는 확인되지 않으며 확인이 필요한 entity 노드의 삽입과 같은 편집 기능도 수행되지 않습니다. XmlDocument는 파일을 익명으로 로드하며 다른 리소스를 확인하려고 하지 않습니다.
속성이 설정되지 않았지만 기본 상태를 유지하고 있습니다. NULL 자격 증명을 갖는 XmlUrlResolver는 파일 이름을 확인하고, 외부 DTD, 엔터티 및 스키마를 찾을 때 XmlDocument에 의해 인스턴스화되어 사용되며 노드를 편집할 때는 null 자격 증명이 사용됩니다.

다음 표에서는 Load의 입력이 XmlReader이며 XmlDocument가 완전히 신뢰될 때의 XmlDocument.Load 메서드를 보여줍니다.

XmlResolver 속성 함수 주의
XmlDocument에서 사용하는 XmlResolver 클래스는 XmlReader에서 사용하는 것과 동일한 클래스입니다. XmlDocumentXmlReader에 할당된 XmlResolver를 사용합니다.

XmlDocument.Resolver 속성은 XmlReader에서 XmlResolver를 가져오므로 XmlDocument 신뢰 수준에 상관없이 설정할 수 없습니다. XmlDocumentXmlResolver 속성을 설정하여 XmlReaderXmlResolver 설정을 재정의할 수 없습니다.
XmlReaderXmlTextReader, XmlValidatingReader 또는 사용자가 작성한 판독기일 수 있습니다. 사용되는 판독기가 엔터티 확인을 지원하면 외부 엔터티가 확인됩니다. 전달된 판독기가 엔터티 참조를 지원하지 않으면 엔터티 참조는 확인되지 않습니다.

일부 신뢰된 XmlDocument

다음 표에서는 개체가 일부 신뢰될 때 XmlDocument.XmlResolver 속성이 작동하는 방식을 보여줍니다. 이 표는 Load의 입력이 TextReader, String, Stream 또는 URI일 경우의 XmlDocument.Load 메서드에 해당합니다. XmlDocumentXmlReader에서 로드할 경우 이 표의 내용이 Load 메서드에 적용되지 않습니다.

XmlResolver 속성 함수 주의
일부 신뢰된 시나리오에서는 XmlResolver 속성을 null 이외의 값으로 설정할 수 없습니다. null 자격 증명을 갖는 XmlUrlResolver는 파일 이름을 확인하고, 외부 DTD, 엔터티 및 스키마를 찾을 때 XmlDocument에 의해 인스턴스화되어 사용되며 노드를 편집할 때는 null 자격 증명이 사용됩니다. 이 동작은 XmlResolver 속성이 설정되어 있지 않지만 기본값 상태로 남아 있을 때의 동작과 동일합니다.

XmlDocument는 모든 작업에 대해 익명 권한을 사용합니다.
이 속성은 null(Microsoft Visual Basic .NET에서는 Nothing)로 설정됩니다. 외부 스키마나 DTD를 찾는 등 외부 리소스가 필요한 기능은 지원되지 않습니다. 외부 엔터티는 확인되지 않으며 확인이 필요한 entity 노드의 삽입과 같은 편집 기능도 수행되지 않습니다. 속성이 null이면 XmlDocument가 완전히 신뢰되거나 일부 신뢰되거나에 상관없이 동일한 동작이 수행됩니다.
속성이 설정되지 않았지만 기본 상태를 유지하고 있습니다. null 자격 증명을 갖는 XmlUrlResolver는 파일 이름을 확인하고, 외부 DTD, 엔터티 및 스키마를 찾을 때 XmlDocument에 의해 인스턴스화되어 사용되며 노드를 편집할 때는 null 자격 증명이 사용됩니다. XmlDocument는 모든 작업에 대해 익명 권한을 사용합니다.

이 표는 Load의 입력이 XmlReader이며 XmlDocument가 일부 신뢰될 때의 XmlDocument.Load 메서드에 해당합니다.

XmlResolver 속성 함수 주의
XmlDocument에서 사용하는 XmlResolver 클래스는 XmlReader에서 사용하는 것과 동일한 클래스입니다. XmlDocumentXmlReader에 할당된 XmlResolver를 사용합니다.

XmlDocument.Resolver 속성은 XmlReader에서 XmlResolver를 가져오므로 XmlDocument 신뢰 수준에 상관없이 설정할 수 없습니다. XmlDocumentXmlResolver 속성을 설정하여 XmlReaderXmlResolver 설정을 재정의할 수 없습니다.
XmlReaderXmlTextReader, 유효성을 검사하는 XmlReader 또는 사용자가 작성한 판독기일 수 있습니다. 사용되는 판독기가 엔터티 확인을 지원하면 외부 엔터티가 확인됩니다. 전달된 판독기가 엔터티 참조를 지원하지 않으면 엔터티 참조는 확인되지 않습니다.

XmlResolver가 정확한 자격 증명을 갖도록 설정하면 외부 리소스에 액세스할 수 있습니다.

참고 항목

XmlResolver 속성을 검색하는 방법은 없습니다. 따라서 사용자는 자격 증명이 설정된 XmlResolver를 다시 사용할 수 없습니다. 또한 XmlTextReader나 유효성을 검사하는 XmlReaderXmlDocument를 로드하는 데 사용되고 XmlDocument에 설정된 확인자가 있는 경우에도 보안 문제가 있기 때문에 Load 단계 이후에 XmlDocument에서 이러한 판독기의 확인자를 캐시하지 않습니다.

자세한 내용은 XmlResolver 참조 페이지의 설명 섹션을 참조하세요.

참고 항목