2

HTML

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

RGBA正则表达式

<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]+))\\)" />

配置文件

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

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

我不太清楚。我哪里错了?

4

1 回答 1

0

更新:AntiSamy 似乎依赖 Apache Batik 来解析样式,而 Batik 无法处理 RGBA 值(根据 Safari Books 上的 SVG Essentials 2nd Edition: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 规则。

于 2015-02-11T01:29:14.843 回答