AntiSamy删除样式中的RGBA值

时间:2014-10-16 13:52:45

标签: antisamy

HTML

<text x="457.87" y="334.21" style="fill: rgba(0,0,0,1);">Analyst</text>
RGBA的

Reg Exp

<regexp name="rgbaCode"
                value="rgba\\(([1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]),([1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]),([1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]),(0|1|(0.[0-9]+))\\)" />

config.xml中

<property name="fill" >
    <regexp-list>
        <regexp name="rgbaCode" />
    </regexp-list>
</property>

通过此设置,将从干净的HTML中删除fill CSS属性。我希望AntiSamy应该在干净的HTML中保留rgba值。 我测试了正则表达式,效果很好。即使我改变了规则表达式以接受任何东西(。*),但这对我来说也不起作用。

我比较清楚。我哪里错了?

1 个答案:

答案 0 :(得分:0)

更新:似乎AntiSamy依赖Apache Batik来解析样式,而Batik无法处理RGBA值(根据Safari Books上的SVG Essentials第2版:https://www.safaribooksonline.com/library/view/svg-essentials-2nd/9781491945308/ch04.html)。因此,无法将RGBA与AntiSamy一起使用。您是否尝试过OWASP HtmlSanitizer作为替代方案?

原始答案: 您是否配置了AntiSamy以允许style标记上的text属性? CSS规则仅用于额外样式验证。

例如tag-rules部分:

<tag name="text" action="validate">
  <attribute name="style" onInvalid="filterTag">
    <regexp-list>
      <regexp value="[-a-zA-Z0-9:_ ;]*"/>
    </regexp-list>
  </attribute>
</tag>

AntiSamy将继续应用您的CSS规则。