以右括号开头的 JSON 数据
JSON data that starts with closing brackets
我发现一个以右括号开头的JSON文件被用于谷歌的一项服务。下面是一个示例,您会看到它在主数据部分之前有右括号和单引号。我检查了获取此JSON数据的javascript代码。他们所做的是在解析数据之前手动删除第一个顺序括号。
)]}'
["value1", "value2"]
这是我的问题。
这种 JSON 格式有效吗?
有人知道他们为什么要这样做吗?
这是针对所谓的JSON劫持漏洞的保护。客户在解释之前剥离掉领先的垃圾。
例如,在 JSON 劫持漏洞中,用户在一个选项卡中登录到应用程序,这意味着浏览器在 cookie 中保存他的身份验证令牌。然后,黑客安排用户在另一个选项卡中打开恶意应用程序。该选项卡中的 HTML 包含一个 script
标记,其src
设置为第一个应用的某些 JSON API 的 URL。由于它是脚本标记,因此没有同源检查。由于浏览器在请求中包含有效凭据,因此第一个应用将继续返回 JSON,其中可能包含机密信息。由于JSON是有效的JavaScript,浏览器会执行它,这本身不会导致任何事情发生,但是黑客可以通过检查脚本标签的内容来检索JSON。
通过将垃圾放在 JSON 前面,它不能被解析为有效的 JS。因此,浏览器出错并且不会将内容加载到恶意应用程序的脚本标签中,因此无法对其进行检查。不同供应商使用的垃圾有多种"口味";谷歌就是其中之一。
如今,有几种针对 JSON 劫持的内置对策,除了在没有正确设置标头的旧浏览器上,它不再构成威胁。
是的,您的 JSON 格式是有效的。如果您对此有任何疑问,请在此链接中查看。
相关文章:
- 如何将JSON数据导入我的ejs模板
- 如何将json数据显示为html
- Json数据包含日期和时间格式
- 用我的json数据填充JQuery DataTable
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 使用jquery读取Json数据
- 如何将本地json数据加载到Extjs数据模型中
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- React-将jSON数据传递给子组件的子组件
- 尝试从控制器加载带有json数据的Simile时间线
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 如何通过数据分组将json数据转换为嵌套的json数据格式
- 如何在ReactJs中显示Json数据
- 使用javascript进行JSON数据检索
- tu如何将id放在填充了json数据的html表td上
- 将JSON数据从服务器加载到knockout.jsobservable中
- 使用JavaScript处理JSON数据
- 如何将json数据传递到.js文件
- 如何在带有nunjucks和gullow数据的JSON数据中使用带有HTML的内容
- 如何使用var名称调用JSON数据