2014-10-16 70 views
2

HTMLRGBA值由AntiSamy

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

config.xml中

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

有了這個成立,fill CSS屬性正從乾淨的HTML中刪除。我希望AntiSamy應該在乾淨的HTML中保留rgba值。 我測試了正則表達式,它運行良好。即使我改變了常規表達式來接受任何東西(。*),但是這對我也不起作用。

我很少線索。我哪裏錯了?

回答

0

更新:似乎AntiSamy依賴於Apache Batik來分析樣式,並且Batik無法處理RGBA值(根據SVG Essentials第2版Safari書籍:https://www.safaribooksonline.com/library/view/svg-essentials-2nd/9781491945308/ch04.html)。所以在AntiSamy中不能使用RGBA。您是否嘗試過使用OWASP HtmlSanitizer作爲替代方案?

原始回答: 您是否配置了AntiSamy以允許text標記上的style屬性? 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的規則。

+0

是的。我配置了AntiSamy以允許文本標籤上的樣式屬性。實際上,我通過在regexp-list部分指定多個regexp來允許rgb/rgba值。它適用於rgb值,但不適用於rgba值。 – ykjs121 2015-03-05 04:48:20