XML 문서의 CDATA 요소를 사용하는 것이 취약합니까? 그렇다면 XML 문서에서 CDATA 요소를 사용하면 어떻게됩니까?XML에서 CDATA 요소를 사용하는 것이 취약한가요?
6
A
답변
8
'취약점'의 의미를 모르지만 많은 사람들이 CDATA 섹션에서 실수를 저질렀습니다. 이것은 게으른 프로그래머가 실제로 텍스트 이스케이프를 이해하지 못하고 XML에 &
인코딩 특수 문자를 인코딩하는 일반적인 프로세스를 피하려고 할 때 발생합니다.
]]>
시퀀스를 포함 할 수 있기 때문에 실제로 마크 업으로 치료를 받고
textstring
에
<
또는
&
문자를 중지합니다
print "<element><![CDATA["+textstring+"]]></element>";
이 동안, 그것은 방수 아니다
<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>
이것은 HTML 주입과 마찬가지로 잠재적으로 XSS와 유사한 보안 영향을 줄 수있는 XML 주입입니다.
그래도 CDATA의 일부 시퀀스를 이스케이프해야합니다 (일반적으로 두 개의 CDATA 섹션간에 ]]>
시퀀스를 나눕니다). 실제적으로 CDATA를 사용하는 것은 단지 &
- 텍스트 내용을 정상적으로 인코딩하는 것보다 쉽습니다. 그래서 정말로 CDATA 섹션을 사용할 이유가 없습니다.
0
무엇에 취약합니까? 어떤 종류의 주사 공격? CDATA는 구문 분석을하지 않고 내용을 전달하도록 파서에 지시하므로 XML 유효성을 검사하는 경우 CDATA 섹션이 유효성 검사 단계에서 누락되었다고 가정합니다.
XML 스트림을 사용하는 코드에는 스키마 유효성 검사 이외의 비즈니스 유효성 검사가 있어야하므로 사용하기 전에 입력을 확인하지 않으면 위험 할 수 있습니다.
2
CDATA 섹션은 XML 문서에서 문자 데이터를 나타내는 또 다른 방법입니다. 다르게 이스케이프 처리된다는 점을 제외하고는 문서의 다른 (태그가 아닌) 텍스트와 정확히 똑같은 것을 의미합니다.
CDATA와 관련된 추가 "취약점"이 없습니다 (XML 파싱 라이브러리의 버그 제외).
관련 문제
- 1. XML에서 합법적으로 CDATA 사용
- 2. xml에서 CDATA 업데이트
- 3. CDATA
- 4. xml에서 요소를 제거하는 XSLT
- 5. C#을 사용하는 XML의 CDATA
- 6. SQL Server XmlType이 CDATA 요소를 보존하지 않습니다.
- 7. XML에서 Java의 문자열로 자식 요소를 추출하려면 어떻게해야합니까?
- 8. C# 모든 특정 요소를 XML에서 반환
- 9. XML에서 루트 요소를 읽지 않고 자식이 아닙니다
- 10. 필요에 따라 xml에서 특정 요소를 당깁니다.
- 11. xml에서 터키어 문자를 사용하는 방법?
- 12. jquery set xml cdata
- 13. XSD CDATA
- 14. EMPTY CDATA
- 15. XSD를 통해 CDATA 만 포함하도록 요소를 적용하는 방법
- 16. mxml의 구성 요소 참조를 사용하는 것이 안전합니까?
- 17. XML에서 레이블 텍스트 업데이트
- 18. AS3는 : XML에서 모든 키 + 값은
- 19. XML에서 HTML 컨텐츠를로드하는 쉬운 방법은 무엇입니까?
- 20. xml에서 스키마 속성 기본값을 사용하는 방법은 무엇입니까?
- 21. XML에서 XSLT를 사용하는 동적 데이터 조작
- 22. MFC를 사용하는 것이 좋습니다?
- 23. * 이것을 사용하는 것이 좋습니다.
- 24. gzcompress를 사용하는 것이 좋습니다.
- 25. html 요소를 사용하는 방법
- 26. 간단한 의심 XML에서 sax 파서 (Xerces)를 사용하는 경우
- 27. 선호하는 방법은 무엇입니까? "<! [CDATA ["<! [CDATA [블록?
- 28. 도움말 및 CDATA
- 29. xml.dom.minidom : CDATA 값 받기
- 30. simplehtmldom에서 cdata 제거
하지만 cdata 요소 사이에 입력 된 텍스트가 파서에 의해 구문 분석되지 않으면 어떻게됩니까? 악의적 인 사용자는 xml 파서가 구문 분석하지 않기 때문에 대상 응용 프로그램의 모든 시스템 명령을 추출하는 데이터를 보관할 수 있습니다. 나는 이것이 일종의 취약성이라고 생각한다. – Madhan
CDATA 섹션의 내용이'&'- 이스케이프 처리되지 않았기 때문에 구문 분석기가 명령을 실행하기 위해 보내면된다는 의미는 아닙니다. 다른 일반 텍스트와 동일한 방식으로 처리됩니다. – bobince
CDATA 블록 *의 데이터가 파서에 의해 구문 분석됩니다. 특히, XML 구문 분석기는']]> 종료 시퀀스를 찾고 있습니다. 그 밖의 모든 것은 문자 데이터로 취급됩니다. –