以右括号开头的 JSON 数据

JSON data that starts with closing brackets

本文关键字:JSON 数据 开头      更新时间:2023-09-26

我发现一个以右括号开头的JSON文件被用于谷歌的一项服务。下面是一个示例,您会看到它在主数据部分之前有右括号和单引号。我检查了获取此JSON数据的javascript代码。他们所做的是在解析数据之前手动删除第一个顺序括号。

)]}'
["value1", "value2"]

这是我的问题。

  1. 这种 JSON 格式有效吗?

  2. 有人知道他们为什么要这样做吗?

这是针对所谓的JSON劫持漏洞的保护。客户在解释之前剥离掉领先的垃圾。

例如,在 JSON 劫持漏洞中,用户在一个选项卡中登录到应用程序,这意味着浏览器在 cookie 中保存他的身份验证令牌。然后,黑客安排用户在另一个选项卡中打开恶意应用程序。该选项卡中的 HTML 包含一个 script 标记,其src设置为第一个应用的某些 JSON API 的 URL。由于它是脚本标记,因此没有同源检查。由于浏览器在请求中包含有效凭据,因此第一个应用将继续返回 JSON,其中可能包含机密信息。由于JSON是有效的JavaScript,浏览器会执行它,这本身不会导致任何事情发生,但是黑客可以通过检查脚本标签的内容来检索JSON。

通过将垃圾放在 JSON 前面,它不能被解析为有效的 JS。因此,浏览器出错并且不会将内容加载到恶意应用程序的脚本标签中,因此无法对其进行检查。不同供应商使用的垃圾有多种"口味";谷歌就是其中之一。

如今,有几种针对 JSON 劫持的内置对策,除了在没有正确设置标头的旧浏览器上,它不再构成威胁。

是的,您的 JSON 格式是有效的。如果您对此有任何疑问,请在此链接中查看。