为什么谷歌的JSON响应以while(1);开头?
问题(QUESTION):
我有个问题一直很好奇就是:为什么谷歌的JSON响应以while(1);开头?举个例子,当把谷歌日历打开和关掉时,会返回这样的JSON对象:
while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],['remindOnRespondedEventsOnly','true'],'hideInvitations_remindOnRespondedEventsOnly','false_true'],['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
觉得这是谷歌不推荐使用eval()函数。我们需要做的是取代while,然后设置。我认为避免使用eval()函数是为了用eval()函数来确认JSON格式的字符串是否正确,从而确保程序员写出安全的JSON解析代码。我在其他一些地方也见过这个用法,但更多的是在谷歌的产品中,像谷歌的邮件、日历、通讯录等。
说来也奇怪,谷歌文档以&&&START&&&开头,但谷歌通讯录却以while(1);&&& START&&&开头。有人知道这是为什么吗?
回答1:
这可以防止JSON劫持。举个不是很恰当的例子:谷歌有一个URL:mail.google.com/json?Action=inbox ,在JSON格式下,它可以读取你的收件箱内前50条消息。由于同源策略,其他域内的坏网站却不能发出AJAX请求,以获取这些数据,但是他们可以通过重写全局数组构造函数或者存取函数,使cookies和URL间可以有一种方法,无论何时设置一个对象(数组或散列)的属性,都允许他们读取JSON内容。
while(1); 或者&&&BLAH&&& 可以防止mail.google.com上的一条AJAX请求,拥有对于文本内容的全部访问权限,并且能够将其撤销。但是同时,一 个 SCRIPT 标签的插入会在无需任何处理的情况下,盲目地执行JavaScript,最终可能导致死循环或语法错误。同时这也并不能解 决伪造的跨站请求问题。
回答2:
这是为了确保让其他网站不能偷取你的信息。例如,先 通过替换数组构造器,再通过一个 SCRIPT 标签包含这个JSON URL,恶意的第三方网站就可以从JSON响应盗取数据。把while(1);放在开头就可以解决这样的问题。在另一方面,来自同一个网站使用XHR和独 立的JSON解析器的请求,可以直接忽略while(1);。
回答3:
这将会给使用 SCRIPT 标签的第三方网站在HTML文档中插入JSON响应变得困难。值得注意的是, SCRIPT 标签
是不需要被Sa授权的哦。
回答4:
这可以防止被当作一个简单 SCRIPT 标签目标。这样的话,坏家伙就不能轻而易举地把脚本标签放到他们自己的网站,利用活动会话而有机会偷取你的数据。
为什么谷歌的JSON响应以while(1);开头?的更多相关文章
- ajax接受json响应
一.显示页面(ajax_xml.html) body部分 <!-- 支持多选的列表框 --> <select name="first" id="firs ...
- ajax接受json响应(讲义)
l 什么是json? l Json和xml比较 l Ajax如何使用JSON l Ajax接收json响应案例 什么是json? JSON (JavaScript Object Notation) 是 ...
- Jmeter(三十四)_Beanshell解析并提取json响应
1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中:否则会报:Typed variable declaration ...
- 一个相对通用的JSON响应结构,其中包含两部分:元数据与返回值
定义一个相对通用的JSON响应结构,其中包含两部分:元数据与返回值,其中,元数据表示操作是否成功与返回值消息等,返回值对应服务端方法所返回的数据. public class Response { pr ...
- 提取json响应结果值_后置处理器JSON Extractor
Json响应格式 json串中{}表示对象,[]表示数组 JSON Extractor使用json path表达式匹配,可以一次取多个变量值. $表示响应的根对象. 取子对象或对象的属性用. 取数组里 ...
- 注册页面的JSON响应方式详细分析(与前端页面交互方式之一)
控制器层 需求分析: 访问路径:`/user/reg.do` //自己根据功能需求设定的请求参数:`username=xx&password=xx&&phone=xx& ...
- JMETER从JSON响应中提取数据
如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握J ...
- 如何使用JMETER从JSON响应中提取数据
如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握J ...
- Jmeter_Beanshell解析并提取json响应
1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中:否则会报:Typed variable declaration ...
随机推荐
- 线段树-最小逆序数hdu1394
title: 线段树-最小逆序数 date: 2018-10-12 17:19:16 tags: acm 算法 刷题 categories: ACM-线段树 概述 这是一道简单的线段树的题,,,当然还 ...
- 【基础知识】.Net基础加强 第四天
一. 显示实现接口 1. 显示实现接口的目的:为了解决法方法重名的问题. 2. 显示实现接口必须是私有的,不能用public 3. (复习)类中成员不写访问修饰符默认是private:类如果不写访问修 ...
- [leetcode DP]64. Minimum Path Sum
一个m*n的表格,每个格子有一个非负数,求从左上到右下最短的路径值 和62,63两个值是同一个思路,建立dp表,记录每个位置到右下角的最短路径的值 class Solution(object): de ...
- 1025 PAT Ranking (25)(25 point(s))
problem Programming Ability Test (PAT) is organized by the College of Computer Science and Technolog ...
- PHP大型电商网站秒杀思路
秒杀/抢购 技术:高可用,高并发 市场:用户体验,曝光度,促销 秒杀放单独服务器,这样即使崩溃不影响网站其他功能. 高可用:双活. 高并发:负载均衡,安全过滤. 阿里云:云监控 分流,CDN加速 业务 ...
- [BZOJ5306][HAOI2018]染色(容斥+FFT)
https://www.cnblogs.com/zhoushuyu/p/9138251.html 注意如果一开始F(i)中内层式子中j枚举的是除前i种颜色之外还有几种出现S次的颜色,那么后面式子就会难 ...
- Codeforces Round #296 (Div. 1) C. Data Center Drama 欧拉回路
Codeforces Round #296 (Div. 1)C. Data Center Drama Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xx ...
- 微信小程序 scroll-view隐藏横向滚动条
::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
- [Dynamic Language] Python定时任务框架
APScheduler是一个Python定时任务框架,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.并以daemon方式运行应用. 在APSchedu ...
- run commands in linux shell using batch file
adb shell as root after device rooted once device rooted, we must perform "su" before we g ...