繁体   English   中英

以结束括号开头的JSON数据

[英]JSON data that starts with closing brackets

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

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

这是我的问题。

  1. 这种JSON格式有效吗?

  2. 任何人都知道他们为什么这样做?

这是对所谓的JSON劫持攻击的保护。 在解释之前,客户端会删除主要垃圾。

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

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

目前有几种内置的JSON劫持对策,除了没有正确设置标头的旧浏览器之外,它不再是威胁。

正如@torazaburo在评论中回答的那样,出于安全原因。

这是对所谓的js劫持攻击的保护。 在解释之前,客户端会删除主要垃圾

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM