为什么“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
不显示的元素有很多的影响布局怪异的边缘情况怪异的 方式。
inline
,block
和inline-block
在大多数情况下可能是安全的。
fixed
大概是安全的。
table
和其他可能是狡猾的,因为可能有办法打破 视觉遏制。即使
block
和inline block
可以打破视觉的容器例如 与策略,只允许内联标签时,嵌入固定容器的width
并且丝毫不掩饰overflow
。
如果你需要任何其他属性值: “内联,内联块,块”? –
如果显示内容:inline-block而不是display:none?该owasp消毒剂仍然会把它拿出来 – idungotnosn
查看更新的答案 – dippas