XML 외부 개체(XXE)

C# XML 외부 개체

설명

신뢰할 수 없는 XML에서 DTD 처리와 외부 리소스 해석을 허용하면 외부 엔티티를 통해 로컬 파일을 읽거나 서버 측 요청을 유발할 수 있습니다. DtdProcessing.Parse만 설정해도 외부 접근이 항상 허용되는 것은 아니며, XmlResolver 설정도 영향을 줍니다.

잠재적 영향

  • 로컬 파일 노출, 내부 네트워크 요청, 서비스 거부가 발생할 수 있습니다.

해결 방법

DTD 처리를 금지하고 XmlResolver를 null로 설정합니다.

예시

변경 전

csharp
var settings = new XmlReaderSettings {
    DtdProcessing = DtdProcessing.Parse,
    XmlResolver = new XmlUrlResolver()
};

변경 후

csharp
var settings = new XmlReaderSettings {
    DtdProcessing = DtdProcessing.Prohibit,
    XmlResolver = null
};

설명:

  • 변경 전: 외부 엔터티를 허용하는 XML 파서는 로컬 파일을 노출하거나 서버 측 요청을 유발할 수 있습니다.
  • 변경 후: 신뢰할 수 없는 XML을 파싱하기 전에 DTD 처리를 비활성화하고 XmlResolver를 null로 설정하세요.

참조