【问题标题】:How does the AngularJS JSON vulnerability protection work?AngularJS JSON 漏洞保护是如何工作的?
【发布时间】:2015-03-02 09:44:05
【问题描述】:

Angular 网站建议在您的 JSON 前面加上 )]}'\n,以防止它们被称为 JSONP:

一个 JSON 漏洞允许第三方网站在某些情况下将您的 JSON 资源 URL 转换为 JSONP 请求。为了解决这个问题,您的服务器可以在所有 JSON 请求前加上以下字符串 ")]}',\n"。 Angular 会在将其作为 JSON 处理之前自动去除前缀。

但是引用的文章没有提到这些右括号,感觉这很容易解决(因为我的 JSONView chrome 插件已经patched 将它们去掉。为什么这不起作用“攻击者”?)。

本文建议将 JSON 包装为对象:

{"d": ["Philha", "my-confession-to-crimes", 7423.42]}

以某种方式保护你。

为什么 AngularJS 偏爱这种(奇怪的)保护,并且 它有效?我不确定如何测试它。

【问题讨论】:

    标签: javascript json angularjs security


    【解决方案1】:

    为什么这对“攻击者”不起作用?

    为了去除字符,您必须有权访问文件的原始内容。

    Chrome 扩展程序可以访问它。将<script> 指向原始文件的人不会。

    为什么 AngularJS 偏爱这种(奇怪的)保护,

    因为它有效;)

    它有效吗?

    是的。当文件被视为 JavaScript 时,它会在到达数组之前在第 1 行抛出错误。这将阻止它尝试评估数组,因此被覆盖的 Array 构造函数将无法从中读取数据。


    令人高兴的是,安全问题似乎只存在于非常古老的 Firefox 版本中,因此您可能根本不需要担心这一点。

    【讨论】:

    • 酷!那么为什么他们不遵循博客中的建议?再次感谢。
    • 可能是因为答案最后一段中描述的原因,但你必须让他们确定。
    • @Quentin 什么是“访问文件的原始内容”?您能否对此进行解释或分享一个对此进行解释的链接?
    • @DhananjayanSanthanakrishnan — 与访问其中的数据解析结果相反
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2010-09-27
    • 2022-01-05
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多