因此,我看到很多人想知道如何执行通过ajax返回的JS代码。我希望我有这个问题。我的JS可以执行,但我也不要!

使用jQuery 1.4.2,我正在执行GET请求:

$.ajax({
  url:'/myurl/',
  type:'GET',
  success:function(response){
    $('body').html(response);
  }
});

响应类似于:
<p>Some content</p>
<script>alert("hi!");</script>

每当触发成功回调并将响应注入(inject)DOM时,警报代码就会触发!我不希望那样发生。我该怎么做才能防止这种情况?

最佳答案

如果您无法修改响应,请尝试“替换” <script>标签:

"<script>alert('hi');</script>".replace(/<(\/?script)/gi, "&lt;$1");

这应该转义标签,使它们显示为纯文本而不是执行。

相关链接
  • jQuery: Parse/Manipulate HTML without executing scripts
  • XSS Cheat Sheet
  • 10-06 04:39