function test1(){
  J("#testDiv").html('test1<'+'script>alert(1);<'+'/script>');
 }
 function test2(){
  document.getElementById('testDiv').innerHTML='test2<'+'script>alert(1);<'+'/script>';
 }
 function test3(){
  var script = document.createElement('script');
  script.innerHTML='alert(1);';
  document.getElementById('testDiv').appendChild(script);
 }

 

 

<a onclick="test1();">test1</a>
<a onclick="test2();">test2</a>
<a onclick="test3();">test3</a>

<div id="testDiv">
</div>

 

 

jquery환경에서 테스트하면

1,3 번은 출력되고 2번은 안된다.

jquery는 내부적으로 append를 통해서 동작하기 때문에

script를 실행시 script가 실행된다.

 

Posted by 삽지리
,