2009-04-30 6 views
1

주요 포인트는 "<"를 만들에 "\ <"와 ">"에서 ">"인라인 스크립트 아래에 방지하는 것입니다 :모든 브라우저 엔진에서 " <"를 "<" 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 렌더링 엔진 < 스크립트 > 태그로 자바 스크립트 문자열에 \ < 스크립트 \ >을 취급하지 않으며, 자바 스크립트 엔진은 여전히 ​​문자열로 "< 스크립트 >"가져 가라. 그러나 모든 브라우저에서 ">"및 "\ <"을이 방식으로 처리하는지 여부는 확실하지 않습니다. 모든 브라우저에서 이러한 종류의 표준이 있습니까?

+0

참고로, 크롬 및 사파리는 하나 – cgp

+0

참조 http://jsbin.com/ecefo – cgp

답변

5

아니요, 가장 좋은 방법은 & gt; 및 & lt; 보다 크거나 적음.

그래서 당신이 뭔가를 원하는 것 :

var foo = "&lt;/script&gt;&lt;script&gt;alert('bug');&lt;/script&gt;&lt;script&gt;"; 
+0

아, 내가 가진 적이없는 그런를하지 않는다 전에 나 한테 일어난 일. 얼마나 이상합니다. 승리 에 IE7 IE8 파이어 폭스 파이어 폭스 맥 에 맥 사파리에 WINXP 에 IE5 그들은 치료 인라인하다 "\>"와 같은 ">" – cgp

+0

나는 인기있는 브라우저에 확인하십시오. –

관련 문제