설명
신뢰할 수 없는 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로 설정하세요.