如果JSONP用于解决相同的源策略,那么它是否不能用于XSS漏洞利用?

时间:2012-07-23 02:04:21

标签: javascript jsonp

我正在尝试理解JSONP是如何工作的,从我迄今为止非常基本的理解,我觉得它用于规避相同的源策略浏览器强制执行。我想这个政策背后的主要原因是为了防止像XSS漏洞利用这样的东西(其中有人说可以注入一个脚本,利用用户机器上的本地cookie来获取有价值的信息,比如当用户登录他们的银行账户时)。 ......是吗?)现在,如果JSONP正在规避这个政策,那么这个政策不能被利用吗?很抱歉,如果这个问题非常基本......几天前我就开始尝试提取javascript,而我仍然试图绕过它:)

谢谢!

4 个答案:

答案 0 :(得分:2)

当您使用JSONP时,您相信托管网站不会注入恶意代码或允许攻击者注入恶意代码。

基本上答案是:是的。如果您没有这种信任程度,请不要使用该网站的JSONP。

答案 1 :(得分:2)

是的,它可以。如果您不信任您要求其数据的第三方,或者有人可以在其间注入某些内容,那么请不要使用JSONP。 JSONP将允许来自第三方网站的任意代码在您的页面上运行。

答案 2 :(得分:2)

  

真正的问题是,你相信其他域吗?由于其他域基本上被授予对页面的完全访问权限(通过JavaScript),因此您应该完全确定您信任它们。如果他们想要他们可以很容易地破坏你的页面,重定向用户,或者更糟糕的是:窃取你的cookie(这会导致一大堆潜在的问题)。

来自:http://james.padolsey.com/javascript/cross-domain-requests-with-jsonp-safe/

所以,基本上,是的,它可以用于XSS漏洞利用。因此,您信任主机域非常重要。如果您不确定主机域的完整性,请避免使用JSONP。

答案 3 :(得分:2)

JSONP正在利用script标记可以从外部域加载数据这一事实。当您将CDN用于流行的库时,您一直在这样做。

因此,JSONP本身并不会使XSS漏洞更容易。 “问题”是script标签可以加载任意文件,这与JSONP无关。无论何时加载外部文件,都必须确保它们不包含恶意代码。