黑客24小时在线接单网站

电脑高手24在线咨询,黑客24小时在线接单网站,黑客接单平台,黑客网站找人,黑客在线qq接单

针对XSS漏洞的前端防火墙:整装待发

到目前为止,我们将能够使用前端脚本进行防御XSS 的所有计划都被列出了。虽然看起来很复杂,但这些只是理论讨论,在实践中不一定要实现。我们的目标只是预警,发现问题,而不是滴水。

事实上,HTML5 已经制定了一套浏览器XSS 解决方案 —— Content Security Policy,而且大多数主流浏览器都达到了这个标准。

由于我们使用前端脚本再次实现,我们必须在各个方面都有优势。

兼容性

CSP 目前主流浏览器大多已支持,IE10、11 支持部分功能。IE10 以前,当然是束手无策。若采用前端脚本实现,则可根据浏览器的实际能力进退。

对于***篇介绍的 DOM-XSS,只需支持标准事件模型即可打开,因此与 兼容IE9 完全可行。

事实上,IE8 就已开放了浏览器 API 接口,并支持本地访问器的操作。IE8 支持钩子程序,拦截可疑元素。

考虑到实际情况,大多数情况下没有拦截,只报告日志进行预警。任何版本的浏览器都是完全可行的,甚至 IE6 没问题。

由于国内 IE 浏览器仍占很大比例,因此使用前端脚本的方案可以覆盖更广泛的用户群。

部署

CSP 是通过 HTTP 头部实现的,策略配置储存在 Content-Security-Policy 这个字段必须在 Web 服务器端配置。这对于一些使用虚拟主机构建的中小型网站来说更麻烦。

前端实现只需在页面中插入脚本,完全不需要关心后端的部署,修改策略也不需要重启服务,维护起来容易多了。

但是,未来 CSP 通过 将支持页面部署meta 标签可以配置策略,实用性会大大提高。

当然,通过标准的改进和时代的进步,今天面临的各种问题最终都会消失。所以任何解决方案都只是为了解决当前的问题。

性能

毫无疑问,浏览器本地支持的肯定比模拟的更有效。

以前考虑过各种情况,需要安装各种事件和钩子,感觉很麻烦。然而,这只是理论上最严格的防御。事实上,它基本上只是一个预警,不需要监控所有的开放。

作为测试,我们还是考虑最严密的情况。根据前几篇文章探讨的结果,我们做一个原型演示。

为了离线模拟在线产品,同时制作 Chrome 插件将脚本注入在线页面:

控制台监控页面中使用的脚本、插件、网络通信等,并根据策略匹配显示不同的颜色。

让我们看看性能的影响。虽然我们打开了所有的监控,但初始化消耗的时间仍然是可以接受的。(测试环境 i3 2.3G 笔记本 Win7 64位)

毕竟,JavaScript 钩只是修改变量的字段,不需要像传统语言那样修改内存权限。

当然,这个页面的内容很少,只能看到脚本的初始化。

我们改变了很多页面:

由于框架页嵌套,我们在讨论钩子时提到,新的页面环境也需要防御,因此多次触发『主动防御』的初始化。

『静态扫描』内容,是 MutationObserver 捕获元素。由于页面内容很多,静态元素也伴随着 HTML 下载时显示文档。虽然扫描累计时间不多,但与整个页面加载的几秒钟相比,基本上被忽略了。

『动态扫描』后期通过脚本创建内容。随着滚动条向下拉,扫描次数逐渐增加。因为我们勾住了 createElement ,理论上,调用会比较慢。然而,在现实中,这种方法很少一口气大量调用。大多数模板使用 innerHTML 批量创建。

此外,我们还勾住了 setAttribute 这种常用的方法,统计结果和『访问器钩子』一起纳入在『属性检验』然而,在现实中,大多数场合都不需要调用这种方法,毕竟,从 attribute 到 property 还需要对字符串进行分析,可以直接使用 property 完全没去 setAttribute。

而访问器钩只在修改 script、embed 这些元素的 src 只有当属性被触发时,这些操作很少,因此可以忽略属性扫描的额外消耗。

策略配置

使用脚本***其优点是其策略可以灵活配置。规则可以动态生成,匹配不限于模式,一般匹配符或正则可以。最初,一切都是由脚本实现的,它可以由脚本决定。

当然,为了更好地适应 CSP 标准,我们尽可能接近战略规范和标准,以便相互兼容。

由于脚本的灵活性,我们不仅支持匹配站点名称的通配符,而且完全支持正则表达式。同时,为了便于测试,调试控制台可以动态修改策略。

下面,让我们找出存在 XSS 页面,立即测试:

刷新,XSS 执行了:

虽然是非同源执行的,但至少是 XSS。我们用它来测试。

然后打开我们的防火墙,为可执行模块配备白名单策略。只允许当前网站的资源,其他网站被拦截并发送报警日志:

奇迹的时刻到了。

站外可疑模块被成功拦截!预警日志同时发送到后台。

日志上报

标准的 CSP 中,报告格式固定,信息内容有限。但这些都不是脚本的问题,你可以随时添加你想要的信息。

你肯定会觉得报告的数量不会太多,毕竟只有少数漏洞。然而,广义上的 XSS 不一定是漏洞造成的。

XSS —— Cross Site Script,只要是页面上的站外脚本,就可以算是。通常只能由漏洞引起,但在某些特殊情况下,站外脚本可能出现在任何页面上,如之前讨论的流量劫持或浏览器插件。

因此,除了在线预警外,我们还可以统计各地区运营商的广告劫持和一些网页插件。

当然,绕过它也很容易。只要我们过滤我们的防御脚本或屏蔽日志发送,我们就不知道。

后记

事实上,最终的计划已经上线了。虽然只有少数用户被抽样,但它仍然传回数百万预警日志。几乎所有的广告劫持和浏览器插件,即使有漏洞,我们也不能一个接一个地分析复制。因此,我们还需要一个有效的复制系统来帮助我们实现自动复制工作。

   
  • 评论列表:
  •  余安颜于
     发布于 2022-05-29 13:58:01  回复该评论
  • perty 完全没去 setAttribute。而访问器钩只在修改 script、embed 这些元素的 src 只有当属性被触发时,这些操作很少,因此可以忽略属性扫描的额外消耗。策略配置使用脚本***其优点是其策略可以灵活配置。规则可以动态生成,匹配不限于模式,一般匹配符或正则可以。最初

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.