javascript - XSS 攻击和样式属性

标签 javascript html coding-style xss

已知的样式属性 XSS 攻击如下:

<DIV STYLE="width: expression(alert('XSS'));">

或者

<DIV STYLE="background-image: url(javascript:alert('XSS'))">

所有例子I've seen使用表达式或 url 功能 - 基本上像这样的功能需要“(”和“)”。

我正在考虑以下过滤样式标签的方法,我会使用以下(大致)语法检查它们:

identifier: [a-zA-Z_][a-zA-Z0-9\-]*
number: [0-9]+
string: '[a-zA-Z_0-9 ]*'
value : identifier | number | string | number + "(em|px)" | number +"%"
entry: identifier ":" value (\s value )*
style: (entry ;)*

所以基本上我允许具有数值或非常有限的字符串值的 ASCII 属性(主要用于字体名称)不允许使用任何看起来像调用的东西。

问题是这样就够了吗?是否有任何攻击可能会做类似的事情:

<DIV STYLE="this-is-js-property: alert 'XSS';">

成功了吗?

有人能想到这种测试的 XSS 漏洞吗?

说清楚

我需要样式属性,因为像 TinyMCE 这样的许多工具都使用它们并且过滤无害 关闭样式属性会严重损害功能。

所以我更喜欢通过常见情况删除所有可能使用@import、url、表达式等的东西。还要确保基本的 css 语法没问题。

回答

不,由于点击劫持漏洞,它不安全。

最佳答案

由于 click-jacking 漏洞,这不起作用。

例子:

<a href="http://example.com/attack.html" style="display: block; z-index: 100000; opacity: 0.5; position: fixed; top: 0px; left: 0; width: 1000000px; height: 100000px; background-color: red;"> </a> 

发现于:http://www.bioinformatics.org/phplabware/forum/viewtopic.php?id=164

代码将得到完美验证,但可能会造成严重损坏。

所以 - 经验法则使用非常严格的白名单或不允许样式属性。

关于javascript - XSS 攻击和样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546591/

相关文章:

javascript - 使用 jQuery 插入 HTML

javascript - 如何让我的网页变慢?

javascript - 如何使用带有 angular.js 和 Angular Material 的 ngif 从 DOM 中隐藏元素?

html - 3种不同的CSS背景

java - 逻辑运算中的条件赋值

performance - 类的 operator() 或将函数绑定(bind)为仿函数?

javascript - NodeJS错误: Cannot GET/from running the url on the web browser

javascript - 如何使用一个 png 图像创建多个网站按钮(及其悬停)

javascript - 将倍数 'background' 添加到 css 类中

javascript - 在开关盒中放置开关盒是不好的做法吗?