相关疑难解决方法(0)

jQuery - HTML中的脚本标记由jQuery解析而不执行

我有一个像这样的HTML页面:

<html>
<body>
<div id='something'>
    ...
    <script>
    var x = 'hello world';
    </script>
    ...
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在另一页上,我这样做:

$.ajax({
    url: 'example.html',
    type: 'GET',
    success: function(data) {
        $('#mydiv').html($(data).find('#something').html());
        alert(x);
    }
});
Run Code Online (Sandbox Code Playgroud)

然而,jQuery并没有在第一个文件中执行javascript,即使文档说它确实如此.我该怎么做呢?

编辑:不幸的是,在我正在处理的实际应用程序中,我无法控制"包含"页面的内容.我们在同一个域上,但我无法修改它输出的代码,因为它是我们的IT部门不会让我们修改的打包产品.

javascript jquery

33
推荐指数
2
解决办法
3万
查看次数

html()vs innerHTML jquery/javascript&XSS攻击

我在自己的代码上测试xss攻击.下面的示例是一个简单的框,用户可以在其中键入他想要的任何内容.按下"测试!"后 按钮,JS会将输入字符串显示为两个div.这是我更好地解释我的问题的一个例子:

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    function testIt(){
        var input = document.getElementById('input-test').value;
        var testHtml = document.getElementById('test-html');
        var testInnerHTML = document.getElementById('test-innerHTML');
        $(testHtml).html(input);
        testInnerHTML.innerHTML = input;
    }
</script>
<head>this is a test</head>
<body>  
    <input id="input-test" type="text" name="foo" />
    <input type="button" onClick="testIt();" value="test!"/>
    <div id="test-html">
    </div>
    <div id="test-innerHTML">
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

如果您尝试将其复制到.html文件并运行它,它将正常工作,但如果您尝试输入<script>alert('xss')</script>,将只抛出一个警告框:`test-html'div内的一个(带有html()函数).

我真的不明白为什么会发生这种情况,而且,用firebug检查代码会给我这个结果(在注入脚本之后)

<body>
this is a test
<input id="input-test" type="text" name="foo">
<input type="button" value="test!" onclick="testIt();">
<div id="test-html"> </div>
<div id="test-innerHTML">
  <script>
    alert('xss')
  </script>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

你可以看到test-htmldiv是空的,而test-innerhtmldiv是脚本.有人可以告诉我为什么吗?是因为html()对脚本注入或类似的东西更安全吗? …

html javascript xss jquery input

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

javascript ×2

jquery ×2

html ×1

input ×1

xss ×1