基于DOM的XSS攻击在现代浏览器中仍然可能吗
Are DOM based XSS attacks still possible in modern browsers?
我目前正在对XSS预防进行一些研究,但我对基于DOM的攻击有点困惑。我读过的大多数关于这个主题的论文都给出了通过URL参数注入JavaScript来修改DOM的例子,如果值是由JavaScript而不是服务器端代码在页面中呈现的。
然而,似乎所有现代浏览器都会对通过URL参数提供的所有特殊字符进行编码,如果这些字符是由JavaScript呈现的。
这是否意味着基于DOM的XSS攻击不能执行,除非针对IE6等旧浏览器?
它们是绝对可能的。如果不过滤来自用户的输出,那么输出可以是任何内容,包括脚本。浏览器无法知道它是否是由您控制的合法脚本。
这不是现代浏览器的问题,而是浏览器将来自您域的每一个内容都视为合法执行的基本原则。
还有其他方面确实被现代浏览器阻止(有时,并非总是)(尽管安全缺陷总是存在),如跨域脚本、第三方访问资源等。
忘记那些10年前的老式XSS示例吧。编写javascript以通过从查询参数中提取未跳过的内容来呈现页面的程序员早就被解雇了,或者换成了angular/backbone之类的框架。
然而,反射/存储的XSS仍然广泛存在。这需要从服务器端和客户端进行正确的转义。现代框架都为在呈现HTML时转义敏感字符提供了良好的支持。例如,当从模型数据渲染视图时,angular具有$sce(严格上下文转义)服务(https://docs.angularjs.org/api/ng/service/$sce)来解决可能的XSS威胁。主干模型也有类似"model.eescape(attribute)"的方法(http://backbonejs.org/#Model-escape)来消除XSS威胁。
- Windows形成web浏览器控件和Javascript更改的DOM
- Selenium无法在浏览器DOM中定位元素
- 有没有一种方法可以使用任何浏览器扩展整个dom树'的开发工具
- DOM 操作、向后兼容性和跨浏览器问题
- Android原生浏览器中的dom处理时间太长
- 将内容推送到浏览器..更改DOM
- 修改时,哪些DOM元素属性会导致浏览器执行回流操作
- 浏览器使用Java而不是Javascript作为DOM操作语言
- 除了用于DOM之外,浏览器中的事件处理API
- 存在什么库来提供跨浏览器 DOM 访问
- 浏览器如何从内部HTML属性更新DOM
- jquery-datatable-jeditable 在浏览器中显示编辑的值,但不保存在 DOM 中
- 浏览器化:从脚本访问 dom 元素
- 如何使用 dom 概念在 Web 浏览器上随机显示 assn 图像
- 在浏览器中使用主干木偶时,“el”必须存在于 DOM 中
- 如何在电子应用程序中从浏览器窗口获取DOM树
- 插入到 DOM 中的 jQuery 不跨浏览器兼容
- 如何使用Javascript/jQuery保存在浏览器(DOM)上修改的html
- 记录或记录所有浏览器DOM/JQuery事件
- 跨浏览器Dom就绪