2012-08-07 5 views
2

HTML에서 XML 삽입 공격에 대한 보고서를 작성하고 있습니다. 따라서 HTML 컨텐츠를 내 HTML 컨텐츠로 사용하려고합니다. 그래서 HTML 데이터를 CDATA 블록으로 감싸려고하지만 올바르게 렌더링 된 것 같습니다.HTML의 CDATA 섹션이 렌더링되지 않는 이유는 무엇입니까?

나는 (validated by W3C) 문서가 다음 Wikipedia article이의 나의 이해에서

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>report</title> 
    </head> 
    <body> 
     <div><![CDATA[AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;">]]></div> 
    </body> 
</html> 

는 내용이 "파서가 마크 업하지,로만 문자 데이터를 해석하는 표시"해야 함을 의미한다. 그래서 출력은 무슨 일 렌더링하는 모든

]]> 

입니다

AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;"> 
모두 Chrome 21.0.1180.60 m에서 그러나

Firefox 14.0.1해야 하는가? <![CDATA[에서 처음으로 ]]>까지의 모든 문자가 모든 문자가 이스케이프 처리 된 것처럼 화면에 나타나지 않아야합니까?

+1

가능하게 중복 http://stackoverflow.com/questions/3880644/how-to-use-cdata-in-html-documents – sundar

답변

4

CDATA 섹션은 XML 구문 분석 모드에서만 브라우저에서 인식됩니다. 레거시 HTML 모드에서는 이상한 일이 발생했습니다.

그래서 XHTML Content-Type으로 문서를 보내도록 서버를 구성해야합니다. 이것은 차례로 이전 버전의 IE (IE 8까지)가 문서를 전혀 렌더링하지 못하게합니다. HTML 문서의 내용으로 HTML 태그를 표시

실제적인 방법은 다음과 같습니다 가) &lt;<&amp;& 현재. 기존 HTML 및 XHTML에서 작동합니다. b) 데이터를 xmp 요소로 묶습니다. 레거시 HTML에서 작동합니다 (XML Content-Type은 없지만 XHTML Doctype을 선언하면 문제가되지 않습니다. 어쨌든 무시됩니다). 예 : xmp 태그는 공백이 영광된다 렌더링 -like 고정 폭 글꼴 및 pre을 의미

<xmp><![CDATA[AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;">]]></xmp> 

. 그러나 이것들은 CSS로 오버라이드 될 수 있습니다. xmp 요소는 HTML 사양에서 오래 전에 삭제되었지만 브라우저에서 상당히 잘 지원됩니다.

관련 문제