2012-12-07 1 views
4

, 내가 가진 HTML 코드 조각을 볼 수 있습니다. 이는 코드가 자동 생성되었거나 편집기에서 제대로 표시해야하거나 특정 이유로 명시 적으로 코딩 되었기 때문에 HTML 웹 페이지에서 해당 양식을 유지해야하기 때문입니다. 경우는 여기에 도움이됩니다 내가 질문 한 코드 줄의 전체 시작이다 :는 대 "% 3Cscript"가끔씩 "<스크립트"

document.write(unescape('('%3Cscript 

않을까요 당신이 <으로 %3C을 교체 잘 그것은 코드가 작동 라인?

답변

3

unescape() 자바 스크립트 함수는 %3C을 다시 <으로 변환하여 문서에 씁니다. 이것은 명백하게 소스에서 문자 <script 태그를 볼 수있는 스캐너를 트리거하지 말고 그 의미를 잘못 해석하려는 시도입니다.

0

언급 한 바와 같이, 스캐너를 속일 가능성이 있습니다. <\/script> 또는 HTML에 포함 된 스크립트 태그에서 자바 스크립트를 작성하는 경우, 시퀀스 스크립트 인라인

1

을 document.writing 때 현재 스크립트 블록 끝나지 필요 '...<scr'+'ipt>'

더 유용하고 중요 하나 인은 </script> 못해 이 스크립트 태그를 종료하기 때문에 스크립트 어디에서나 나타납니다

<script type="text/javascript"> 
    var a = "<script>alert('hello world'); 
</script> 
"; 
<script></script> 
:

<script type="text/javascript"> 
    var a = "<script>alert('hello world');</script>"; 
</script> 

더 많은 이하로 처리됩니다

html 파서의 눈에는.

<script type="text/javascript"> 
    var a = "<script>alert('hello world');<\/script>"; 
</script> 

이는 document.write 관련이 없습니다 기술적으로 전혀은 document.write이입니다 단지입니다 : mplungjan처럼

는이 복잡한 방법이며 하나 만들 리터럴 자바 스크립트 문자열 단순히 <\/script>가 작동 할 수 말했다 당신이 필요로하는 일반적인 장소 "</script>" 자바 스크립트 문자열 리터럴.

또한 "<script>"은 사실 그대로 전체적으로 훌륭합니다. 코드에서 자른 문제는 단지 "</script>"입니다.