)]}'
Google plus在第一行返回 ajax 请求。我听说它是针对 XSS 的保护。有没有任何例子,如果没有这种保护,任何人怎么能这样做?
2 回答
这是我对这里发生的事情的最佳猜测。
首先,google json 格式的其他方面不是很有效的 json。因此,除了任何保护目的之外,他们可能会使用这个特定的字符串来表示文件的其余部分是 google-json 格式并且需要相应地解释。
使用此约定还意味着数据馈送不会通过来自脚本标签的调用执行,也不会通过直接从 eval() 解释 javascript。这可以确保前端开发人员通过解析器传递内容,这将阻止任何植入的代码执行。
因此,为了回答您的问题,这可以防止两种看似合理的攻击,一种是通过脚本标签进行跨站点攻击,但更有趣的是站点内攻击。两种攻击都假设:
- 用户数据如何转义和
- 它被利用的方式允许攻击者将代码注入其中一个数据源。
举个简单的例子,假设用户想出了如何获取类似示例的字符串
["example"]
并将其更改为"];alert('example');
[""];alert('example');"]
现在,如果该数据出现在另一个用户的提要中,攻击者就可以在用户的浏览器中执行任意代码。由于它在站点内,因此 cookie 被发送到服务器,攻击者可以自动执行诸如共享帖子或从用户帐户向人员发送消息等操作。
在 Google 场景中,这些攻击因多种原因不起作用。在攻击代码运行之前,前 5 个字符将导致 javascript 错误。另外,由于开发人员被迫解析代码而不是意外地通过 eval 运行它,因此这种做法将阻止代码无论如何执行。
正如其他人所说,这是对跨站点脚本包含(XSSI)的保护
我们在Gruyere上对此进行了解释:
第三,您应该确保该脚本不可执行。执行此操作的标准方法是为其附加一些不可执行的前缀,例如 ])}while(1);。在同一域中运行的脚本可以读取响应的内容并去除前缀,但在其他域中运行的脚本不能。