주요 포인트는 "<"를 만들에 "\ <"와 ">"에서 ">"인라인 스크립트 아래에 방지하는 것입니다 :모든 브라우저 엔진에서 " <"를 "<" and ">"으로 처리합니까?
<script>
var foo = "</script><script>alert('bug');</script><script>"; // the value of foo is generated from server
</script>
foo는의 문자열 값은 서버 측에서 생성됩니다. 따라서 "<"을 "\ <"으로 변경하고 ">"을 ">"로 변경합니다. (나는 알고있다 ">"에서 "&있다"탈출해야한다는 주장이지만,이 경우에는 고려하지 않습니다.)
그래서, 예상되는 결과는 다음과 같습니다에 대한
<script>
var foo = "\</script\>\<script\>alert('bug');\</script\>\<script\>"; // the value of foo is generated from server
</script>
IE7/8과 파이어 폭스는 HTML 렌더링 엔진 < 스크립트 > 태그로 자바 스크립트 문자열에 \ < 스크립트 \ >을 취급하지 않으며, 자바 스크립트 엔진은 여전히 문자열로 "< 스크립트 >"가져 가라. 그러나 모든 브라우저에서 ">"및 "\ <"을이 방식으로 처리하는지 여부는 확실하지 않습니다. 모든 브라우저에서 이러한 종류의 표준이 있습니까?
참고로, 크롬 및 사파리는 하나 – cgp
참조 http://jsbin.com/ecefo – cgp