我正在构建一个应用程序,允许用户为自己的配置文件输入自定义CSS(有点像MySpace,Friendster或Blogger)。
问题是我很难找到通过CSS净化XSS攻击的方法。我尝试使用HTMLPurifier,但它不起作用。一个例子:
html {
expression: alert('xss');
}
body {
background-color: #FFF;
}
HTMLPurifier允许这样做。
HTMLPurifier是否需要使用任何设置才能使其无效?
谢谢!
更新
表达式: 是通过CSS推送漏洞的唯一方法吗?如果是这样,正则表达式会比使用HTMLPurifier更有效吗?
答案 0 :(得分:2)
HTML Purifier对HTML输入进行操作,而不是CSS。话虽这么说,你可以通过在样式标签中包装样式表并启用%Filter.ExtractStyleBlocks来欺骗它来处理CSS样式表。你需要安装CSS Tidy。
更新。否。有很多方法可以提供CSS有效负载,而且搜索表达式还不够。
答案 1 :(得分:0)
$str = preg_replace("/expression[\s:\]+/", '', $str)
将删除表达式字符串。
在我的oppinnion中,最好简单地“禁止”或以其他方式标记试图将此内容输入您网站的用户。 不知道使用CSS打破浏览器的其他方法,也许@Edward可以在这里帮助:)