为什么“display”css属性不在owasp java库的默认白名单中?

问题描述:

我目前在后端服务上使用owasp java library来清理客户端发送的HTML。 owasp java库有一个css规则的CSS白名单,它允许在html元素内的任何样式标签内部。你可以找到白名单here为什么“display”css属性不在owasp java库的默认白名单中?

我注意到这个白名单的一件事是display属性被省略。这意味着,如果我创建一个类似下面的HTML代码:

<div style="margin-left:0px;display:none;"></div> 

然后将HTML消毒剂与默认样式白名单将剥离出的显示规则并保存在服务器上的HTML将是:

<div style="margin-left:0px;"></div> 

为什么display属性默认不是白名单?

因为那么其他列入白名单的方式是行不通的,由于在所有

UPDATE

display不显示的元素有很多的影响布局怪异的边缘情况怪异的 方式。

inlineblockinline-block在大多数情况下可能是安全的。

fixed大概是安全的。

table和其他可能是狡猾的,因为可能有办法打破 视觉遏制。

即使blockinline block可以打破视觉的容器例如 与策略,只允许内联标签时,嵌入固定容器的 width并且丝毫不掩饰overflow

Source

+1

如果你需要任何其他属性值: “内联,内联块,块”? –

+0

如果显示内容:inline-block而不是display:none?该owasp消毒剂仍然会把它拿出来 – idungotnosn

+0

查看更新的答案 – dippas