【问题标题】:How is JSONP any safer than JSON in cross-domain requests?JSONP 在跨域请求中比 JSON 更安全吗?
【发布时间】:2014-01-24 04:15:11
【问题描述】:

为什么浏览器允许跨域 JSONP 请求而不允许 JSON 请求?我知道不允许使用 JSON 请求来防止 XSS,但我不明白 JSONP 比 JSON 更安全。

事实上,JSONP 会不会更危险,因为它在技术上是一个脚本,而 JSON 只是一个文本字符串?

【问题讨论】:

    标签: ajax json browser cross-domain jsonp


    【解决方案1】:

    JSONP 并不安全。这是一种绕过同源策略的变通方法/漏洞/黑客。

    CORS 是 JSONP 的更安全替代方案。

    【讨论】:

    • 为什么浏览器会阻止 JSON 请求,而开发人员总是可以只使用 JSONP(这并不安全)?允许一个但不允许另一个有什么意义?
    • 开发人员不能总是使用 JSONP。服务器必须支持它。
    • 那么,浏览器允许 JSONP(而不是 JSON)是因为 less Web API 支持 JSONP?是这个原因吗?
    • 并不是浏览器“允许”JSONP。浏览器无法区分 JSONP 和 <script> 标记,其 src 属性引用任意域,因为没有区别。浏览器“允许”JSONP 与“允许”外部脚本一样多。
    • 我知道这一点(“允许”只是一种简洁的表达方式)。如果浏览器允许 JSONP,那么也允许 JSON 不会产生很大的安全差异,对吧?
    【解决方案2】:

    由于跨域 JSON 被拦截,敏感数据可以使用 JSON 传输,而不是 JSONP。这可以防止 XSS。此外,服务器不应使用 JSONP 发送敏感数据。因此,使用 JSON 发送数据可以防止未经授权的观察。从这个意义上说,JSON 更安全。

    【讨论】:

      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2011-06-22
      • 2013-10-29
      • 2010-11-11
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多