2

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

谢谢!

4

4 回答 4

2

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

所以基本上答案是:是的。如果您没有该级别的信任,请不要使用该站点的 JSONP。

于 2012-07-23T02:14:23.193 回答
2

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

于 2012-07-23T02:15:20.073 回答
2

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

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

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

于 2012-07-23T02:20:59.990 回答
2

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

所以 JSONP 本身并不能使 XSS 攻击更容易。“问题”是script标签可以加载任意文件,这与 JSONP 无关。每当您加载外部文件时,您必须确保它们不包含恶意代码。

于 2012-07-23T02:34:12.500 回答