前置 while(1); JSON 响应:Google 为什么这样做?
向 Google 的私有 JSON 端点发出 API 请求时,您可能会注意到一个不寻常的前缀:while(1);。这引发了对其目的和潜在影响的疑问。
防止 JSON 劫持
此前缀的主要原因是防止 JSON 劫持。 2011 年之前,浏览器允许网站拦截和修改 AJAX 请求期间动态创建的对象。通过前置 while(1);对于 JSON 响应,Google 会阻止浏览器将这些响应评估为 JavaScript 代码,从而有效阻止潜在的劫持攻击。
避免 Eval() 漏洞
现代浏览器强制执行安全 JSON 解析,使得通过eval()执行恶意代码变得困难。然而, while(1);前缀通过为攻击者创建语法歧义来提供额外的安全层。即使他们删除了前缀,剩余的代码也会导致无限循环或语法错误,从而使攻击无效。
Google 服务之间的变化
不同的 Google 服务使用此前缀的变体。 Google 文档使用 &&&START&&& 而不是 while(1);,而 Google 通讯录则将 &&&START&&& 附加到 while(1);。这与防止 JSON 劫持的目的相同。
结论
Google 包含了 while(1);其私有 JSON 响应中的类似前缀是针对 JSON 劫持攻击的主动措施。它确保这些响应不会被视为可执行的 JavaScript 代码,从而保护用户数据并防止恶意活动。
以上是为什么 Google 在 JSON 响应前添加'while(1);”?的详细内容。更多信息请关注PHP中文网其他相关文章!