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