.NET中的AntiSamy样式属性

时间:2014-04-04 21:14:13

标签: .net antisamy

我在.Net项目中使用AntiSamy。我想保留<span>标签的样式属性,原封不动。我尝试修改政策,但我做了什么,我得到了相同的结果......从这个:

<p><span style="font-size:10px"><span style="font-family:arial">Name here<br />

对此:

<p><span style=""><span style="">Name here<br />

查看政策文件后,我在那里看到了这条评论:

<!-- the "style" attribute will be validated by an inline stylesheet scanner, so no need to define anything here - i hate having to special case this but no other choice -->

我在这里有一些问题......

政策xml文件中的注释行是什么意思?

我是否必须对<common-attributes>中的style属性进行更改,或者这不会触及<span>标记中的样式属性?

我是否必须仅在<tag name="span" action="validate"/> <tag-rules>下的样式属性内容中进行更改?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

&#34;风格&#34;属性是AntiSamy中的一个特例(因为style属性的值由属性 - 值对列表组成)。

style="font-size:10px; color:red;"

样式属性的值由特殊扫描仪内联样式表扫描程序扫描。对于其他标记属性,此验证并不简单,因为&#34; style&#34;中的每个属性都是如此。本身应遵循一些规则。必须为这些规则定义一个部分例如,

<css-rules>
    <property name="font-size" >
        <category-list>
            <category value="visual" />
        </category-list>
        <literal-list>
            <literal value="inherit" />
        </literal-list>
        <regexp-list>
            <regexp name="length" />
        </regexp-list>
    </property>
</css-rules>

将根据css-rules中定义的规则验证css属性font-size。这里正则表达式长度在公共正则表达式部分中定义为

<regexp name="length"
            value="((-|\+)?0|(-|\+)?([0-9]+(\.[0-9]+)?)(em|ex|px|in|cm|mm|pt|pc))" />

common-attributes或tag-rules部分没有变化。