使用脚本标记跨站点脚本,更改脚本标记的src,我们可以使用id作为脚本标记

时间:2010-10-19 09:01:48

标签: javascript xss

<body>
<!-- some html code -->

<script src='some.js'></script>

<!-- some html code -->

</body>

脚本some.js加载表单。 当我按下该表单中的更新时,我不提交表单而是我形成一个查询字符串,并希望将其发送为 some.js?键=值

现在我需要更改脚本标记的src。

如果我们更改src会再次请求新内容吗? 我们可以将ID用于脚本标记吗?如果是这样,它是否会被所有浏览器支持?

收到新内容后,我将清除此脚本显示的旧内容。 我认为最好有一个div并将所有内容放在div中。 我在我的htaccess中将script.js重写为script.php只是向用户显示它只是一个javascript访问或者如果我给.php我没问题。

以上是基本要求。

我们需要的只是使用脚本标记来获取其他网站的内容,并在此处进行更新。

您可以提供建议,以标准方式使用此方法,其中包括更新x网站的内容。

所以这就是人们所说的跨站点脚本,按需javascript,如果有的话请添加更多术语,以便我自己更新。

任何形式的回应都会有所帮助。

4 个答案:

答案 0 :(得分:2)

根据W3C(http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.1),'script'标签不支持任何标准属性(包括' id'),但它适用于大多数浏览器。我建议删除标签并添加新标签,而不是替换'script'标签'src'属性 - 这样更可靠。我强烈建议您阅读JSONP和跨源资源共享(http://www.w3.org/TR/cors/) - 这些标准应该可以帮助您实现您想要的目标。

答案 1 :(得分:2)

正如@tpeczek所提到的,要更改脚本src属性是不够的,有些浏览器不会重新加载脚本。
使用以下内容替换标记:

var oldScript = document.getElementById('someID');
var script = document.createElement("script");        
script.setAttribute("type","text/javascript");                
script.setAttribute("id","someID");
script.setAttribute("src",url);

if (oldScript == null) {               
    document.body.appendChild(script);
} else {
    document.body.replaceChild(script, oldScript);
}

答案 2 :(得分:1)

你不能用老式的方式来浏览所有的脚本元素并检查src以找到some.js吗?

答案 3 :(得分:1)

<强>更新 作为global attribute,HTML5中的script代码似乎支持id