当前位置: 首页 > 面试题库 >

为什么Google会优先使用while(1); 他们的JSON响应?

呼延景同
2023-03-14
问题内容

为什么Google会优先while(1);使用其(私有)JSON响应?

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

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

我认为这是为了防止人们eval()对此进行操作,但是您真正要做的就是替换while,然后进行设置。我认为评估是为了确保人们编写安全的JSON解析代码。

我也曾在其他几个地方使用过此功能,但在Google(邮件,日历,通讯录等)中使用了更多功能。奇怪的是,Google
Docs
以开头,&&&START&&&而Google
Contacts似乎以开头while(1); &&&START&&&

这里发生了什么?


问题答案:

它可以防止JSON劫持,这是自2011年以来使用ECMAScript 5
在所有主要浏览器中正式修复的主要JSON安全问题。

人为的例子:假设Google有一个类似的URL
mail.google.com/json?action=inbox,它以JSON格式返回收件箱中的前50条消息。由于同源政策,其他域上的邪恶网站无法发出AJAX请求来获取此数据,但是它们可以通过<script>标记包含URL
。随 您的 cookie 一起访问URL ,并且通过覆盖全局数组构造函数或访问器方法,只要设置了对象(数组或哈希)属性,它们就可以拥有一个被调用的方法,从而允许它们读取JSON内容。

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

这不能解决跨站点请求伪造的问题。



 类似资料:
  • 问题内容: 为什么Google会优先使用其(私有)JSON响应? 例如,这是在Google日历中打开和关闭日历时的响应: 我认为这是为了防止人们对此进行操作,但是您真正要做的就是替换,然后进行设置。我认为评估是为了确保人们编写安全的JSON解析代码。 我也曾在其他几个地方使用过此功能,但在Google(邮件,日历,通讯录等)中使用了更多功能。奇怪的是,GoogleDocs以开头,而Google C

  • 问题内容: 我有一个字典,它以字符串形式存储在db字段中。我试图将其解析为字典,但给我一个错误。 为什么会失败并起作用?一个比另一个更好吗? 问题答案: 失败,因为您的值不是有效的JSON文档。在有效文档中,字符串用双引号引起来,并且没有类似将字符串转换为unicode的方法。 使用方法将文档反序列化 在需要评估评估表达式时使用。如果您有Python表达式作为您要评估的输入。 一个比另一个更好吗?

  • 本文向大家介绍为什么React并不推荐我们优先考虑使用Context?相关面试题,主要包含被问及为什么React并不推荐我们优先考虑使用Context?时的应答技巧和注意事项,需要的朋友参考一下 1、Context目前还处于实验阶段,可能会在后面的发行版本中有很大的变化,事实上这种情况已经发生了,所以为了避免给今后升级带来大的影响和麻烦,不建议在app中使用context。 2、尽管不建议在app

  • 问题内容: Google返回json,如下所示: 和Facebook的ajax具有这样的json: 他们为什么放置将停止执行并生成无效json的代码? 如果它无效,他们将如何解析它;如果您尝试评估它,它将崩溃吗? 他们只是将其从字符串中删除(似乎很昂贵)吗? 这有什么安全优势吗? 出于安全考虑,对此: 如果刮板在另一个域上,则它们将不得不使用标签来获取数据,因为XHR无法跨域工作。即使没有,攻击者

  • 问题内容: 我在服务器上有一个网站。主页为example.com/index.php。 好的,我将一个index.html命名文件上传到服务器(根目录),当我在浏览器的URL栏中键入站点的域时,感到很惊讶,因为index.html页面已加载。 (example.com-> example.com/index.html)所以不是我想要的。 我的问题:为什么会这样?为什么index.html比inde

  • 在我学习解析技术的过程中,解析树似乎总是以深度优先的方式遍历。 最左边的派生对应于解析树的前序遍历,而最右边的派生对应于解析树的后序遍历的相反[1] 而预序和后序遍历只是深度优先树遍历的两种特定类型[2]。 我认为原因在于普通树和解析树的区别。普通树只记录节点之间的拓扑结构,而解析树记录的不止这些。解析树还意味着父节点是在子节点上构建的,因为父节点派生到子节点的集合中。如果我们想计算解析树的根节点