gpt4 book ai didi

javascript - 为什么谷歌会在前面加上 while(1);他们的 JSON 响应?

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:25 25 4
gpt4 key购买 nike

为什么 Google 在他们的(私有(private))JSON 响应中添加 while(1);

例如,这是在 Google Calendar 中打开和关闭日历时的响应:

while (1);
[
['u', [
['smsSentFlag', 'false'],
['hideInvitations', 'false'],
['remindOnRespondedEventsOnly', 'true'],
['hideInvitations_remindOnRespondedEventsOnly', 'false_true'],
['Calendar ID stripped for privacy', 'false'],
['smsVerifiedFlag', 'true']
]]
]

我假设这是为了防止人们对其执行 eval(),但您真正需要做的就是替换 while,然后您会被设置。我假设 eval 预防是为了确保人们编写安全的 JSON 解析代码。

我也看到它在其他几个地方使用过,但在 Google(邮件、日历、联系人等)中使用得更多。奇怪的是,Google Docs&&&START&&& 开头,Google 通讯录似乎以 while(1) 开头; &&&开始&&&

这是怎么回事?

最佳答案

它阻止了 JSON hijacking ,一个正式的主要 JSON 安全问题 fixed在所有主流浏览器中 since 2011使用 ECMAScript 5。

人为的例子:假设谷歌有一个类似 mail.google.com/json?action=inbox 的 URL它以 JSON 格式返回收件箱的前 50 条消息。由于同源策略,其他域上的恶意网站无法通过 AJAX 请求获取此数据,但它们可以通过 <script> 包含 URL。标签。使用您的 cookie 访问 URL,并通过 overriding the global array constructor or accessor methods他们可以在设置对象(数组或散列)属性时调用一个方法,从而允许他们读取 JSON 内容。

while(1);&&&BLAH&&&防止这种情况:在 mail.google.com 的 AJAX 请求将具有对文本内容的完全访问权限,并且可以将其删除。但是一个<script>标签插入盲目执行 JavaScript 而不进行任何处理,导致死循环或语法错误。

这没有解决 cross-site request forgery 的问题.

关于javascript - 为什么谷歌会在前面加上 while(1);他们的 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com