【对立蠕虫】怎么维护网页里的按钮,不被 XSS 主动点击
前语
XSS 主动点按钮有什么损害?
在交际网络里,大多操作都是经过点击按钮建议的。例如宣布留言,假设留言体系有 BUG,那么 XSS 就能主动点击发送按钮,发布带有恶意代码的留言。老友看了中招后,又传播给他们的老友,然后构成蠕虫分散。
那么,有没有一种机制,让「宣布按钮」有必要经过用户的「实在点击」才干完结,而无法经过脚本主动完成?
完成
这个主意听起来如同不行行:假设宣布留言需求带上用户行为信息,那么 XSS 完全能够假造一份行为数据,后端底子无法辨认。
除非,用户在点击按钮时会发生一个「特别数据」,让后端校验它。
可是,XSS 也能够直接调用按钮元素的 click 方法,这样作用和用户点击依然相同。后端仍无法辨认,是脚本点的,仍是用户点的。
这么看来,咱们只能保护好这个「按钮元素」,让它无法被 XSS 访问到。例如,放在一个不同源的 iframe 里,这样就和 XSS 地点的环境隔离了!
不过,这样还不行。假设 XSS 破解了这个「特别数据」的生成规矩,那么即可自己假造一个,然后直接调用 HTTP 接口宣布留言。所以,咱们得找一个不行假造的硬标识。
事实上,有个很简单的方法:咱们爽性让 HTTP 恳求也经过 iframe 发送。这样,后端经过 referer 即可检测恳求是否为 iframe 建议的。究竟,XSS 是无法假造 referer 的!
[1] [2] [3] 黑客接单网