首页 前端知识 为什么 Google 在他们的 JSON 响应前加上 `while(1);`?

为什么 Google 在他们的 JSON 响应前加上 `while(1);`?

2024-08-15 22:08:12 前端知识 前端哥 302 292 我要收藏

在浏览一些前端开发中的问题时,可能不少开发者都注意到 Google 的 JSON 响应前面会有一个奇怪的 while(1); 声明。这是什么缘故呢?本文将详细解释这种做法背后的技术原因。

防范 JSON 劫持

这是为了防止通过 JSON 劫持(JSON Hijacking)来泄露响应内容。理论上,HTTP 响应的内容应该由同源策略(Same Origin Policy)保护,来自不同域的页面无法获取信息,除非特意授权给这些页面。

尽管同源策略在正常情况下提供了保护,但攻击者仍能通过某些手段发起请求,例如通过使用 <script src=...><img> 标签。不过,这样攻击者无法获取关于结果的任何信息(如头信息、内容)。

例如,当你访问某个攻击网站时,即使这个网站能够通过脚本标签请求到你在 gmail.com 上的邮件,它也不能读取这些邮件的内容。

然而,当使用脚本标签请求 JSON 内容时,JSON 会作为 JavaScript 在攻击者控制的环境中执行。如果攻击者能够替换数组或对象构造函数,亦或是在对象构造期间使用的某些方法,JSON 中的任何内容都将通过攻击者的代码,并泄露出去。

需要注意的是,这种情况发生在 JSON 作为 JavaScript 执行时,而不是在 JSON 被解析时。

多种防御措施

确保 JSON 永远不执行

通过在 JSON 数据前放置一个 while(1); 声明,Google

转载请注明出处或者链接地址:https://www.qianduange.cn//article/15742.html
标签
评论
发布的文章

HTML5学习记录

2024-04-29 12:04:01

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!