我现在正在编写一个应用程序,它使用 jQuery 和 JSONP 从第 3 方服务器获取 JSON。我的应用程序背后的主要思想是,它是一个仅具有 GUI 逻辑的前端,任何人都可以编写第三方服务器来使用该前端。
我不知道这会引起什么安全问题,但我绝对认为这是一个潜在的问题。我可以采取哪些步骤来确保第三方服务器不会完全破坏我将运行 GUI 的网站?
最佳答案
JSONP 意味着您执行第三方 javascript,它应该返回 Javascript 对象。使用 JSONP 加载的脚本可以执行本地脚本可以执行的任何操作,因此它在两种情况下都是 XSS 攻击向量:如果您请求 JSONP 数据的第三方是邪恶的,或者如果数据被人为更改-中间人攻击。
第二种类型的攻击可以通过仅通过安全连接执行 JSONP 来避免(或者如果您自己的页面是通过不安全的连接发送的,则可以忽略,在这种情况下,有更简单的方法来执行 man-in-the-中攻击);第一种类型是 JSONP 固有的,无法避免。仅当您信任源时才应使用 JSONP。否则,您可以在自己的服务器上设置 AJAX 网关并通过该网关请求 JSON 数据(这仅在 JSONP 服务不需要身份验证的情况下才有效),或者使用跨域 AJAX 请求(这在旧版浏览器中不起作用) ,并且需要 JSONP 服务器的某些权限)。
关于javascript - jQuery 中 JSONP 的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318203/