security - JSONP 可以安全使用吗?

在使用 JSONP 时有哪些安全问题需要考虑?

最佳答案

更新:JSONP 是一种常见的跨域请求方法。现代浏览器现在有跨域资源共享,IE8+ 有类似的 XDomainRequest。见 http://enable-cors.org/了解更多信息。

JSONP 只是一个脚本包含,允许您使用回调。但是,您应该注意 Cross-site request forgery (CSRF) .

只要您控制脚本和服务器,JSONP 就不再比脚本包含不安全。除非您有一个 JSONP 服务将敏感数据返回给登录用户。恶意站点可以向服务发送请求(希望用户登录到您的站点),然后检索数据。该服务可以检查请求的引荐来源网址,但可以使用 flash 欺骗引荐来源网址(感谢 Chris Moschini)。

想象一下这个情景: - 用户登录他的网上银行账户。在用户浏览器中存储 session cookie。该站点有一个 jsonp 服务,其中包含有关用户及其帐户的敏感信息。 - 其他站点不会知道用户已登录,但他们可以大胆猜测并尝试访问 jsonp 服务。由于用户有一个 session cookie,浏览器会得到响应,并且没有什么可以阻止网站执行 ajax 发布以将敏感数据保存在其服务器上。

2012 年 6 月 28 日更新:如果您想防止 CSRF 攻击,您应该阅读安全专家的这篇深度博文:http://erlend.oftedal.no/blog/?blogid=130

https://stackoverflow.com/questions/613962/

相关文章:

json - Groovy - 将对象转换为 JSON 字符串

json - 记录 JSON 结构的语法

javascript - 需要 Handlebars.js 来渲染对象数据而不是 "[Object

javascript - 什么是 "top level JSON arrays",为什么它们存在安全

javascript - Angular 5 服务读取本地 .json 文件

c# - 使用 ConfigurationBuilder 设置基本路径

c# - 使用 JSON.net 获取 JToken 的名称/ key

python - 将 Python namedtuple 序列化为 json

c# - 如何将对象传递给 HttpClient.PostAsync 并序列化为 JSON 主体?

javascript - AJAX跨域调用