关于iframe:JavaScript framekiller和XSS漏洞

JavaScript framekiller and XSS vulnerability

所有已知的JavaScript框架杀手是否都容易受到XSS的攻击?

如果是,在脱离iframe之前谁足以消毒window.location
最好的方法是什么?
您能否举一个可能的XSS攻击示例?

谢谢!

UPD:我问的原因是因为我收到一个漏洞扫描警报,说包含top.location.replace(document.location)的JS framekiller代码易受XSS攻击,因为document.location由用户控制。


描述中正确的是:\\'document.location \\',\\'window.location \\',\\'self.location \\'等变量(部分)由不受信任的用户控制。这是因为选择了非信任域和页面位置(\\'http://non.trusted.domain.com/mypage \\')中的(sub)字符串以及非信任请求字符串(\\'http:// my.domain.com/?myrequest \\')是根据用户的意图形成的,不一定总是对您有好处。

出了什么问题:此用户依赖性不一定是XSS漏洞。实际上,要形成XSS,您将需要一些代码来有效地使用页面输出流中某处不受信任的用户控制的内容。在像top.location.replace(window.location)这样的简单framekiller的示例中,没有XSS的危险。

我们可以谈论XSS的一个例子是类似

的代码

document.write('Click here')

http://test.com/?dummy"alert("Test")"dummy那样构造URI并替换为document.location,由您的代码代替会在可信网页的上下文中触发不可信脚本。由于构造此类URI并将其不转义传递是一个挑战,因此真正的XSS可以在一些更复杂的场景中工作,这些场景涉及将不可信变量逐字插入语言指令流中,例如HTML,CSS,JS,PHP等。

另一个不了解XSS的开发示例是发明JSON的历史。尽管JSON受到了极大的欢迎(也吸引了我的支持者),但最初它是作为"快速n脏"方式将JS数据存储为纯JS格式的数据结构。为了"解析" JSON块,只需要eval()就足够了。幸运的是,人们很快意识到了整个想法的缺陷,因此,如今,任何精通头脑的开发人员都将始终使用适当的安全JSON解析器。