使用OWASP AntiSamy时,Quill笔记应白名单哪些HTML标签与属性?
Quill笔记场景下OWASP AntiSamy白名单补充建议
针对你用Quill创建笔记、用OWASP AntiSamy做内容净化的场景,结合你已列出的白名单,补充以下必要的标签和属性配置——既能覆盖Quill常用编辑功能,又能保证内容安全:
一、你已覆盖的基础标签(无需调整)
你选的这些都是Quill最常用的基础格式标签,完全没问题:
- 文本强调:
b、i、u、em、strong、mark - 段落与换行:
p、br - 列表:
ul、ol、li - 链接:
a(带href、title、target属性)
二、需要补充的常用标签及配置
1. 引用块
Quill的引用功能会生成<blockquote>标签,必须加入白名单:
<tag name="blockquote" action="validate"/>
2. 代码块
Quill的代码块由<pre>和<code>组合生成,两个标签都要白名单:
<tag name="pre" action="validate"/> <tag name="code" action="validate"/>
3. 多级标题
如果你的笔记支持标题(Quill默认支持H1到H6),按需添加对应标签:
<tag name="h1" action="validate"/> <tag name="h2" action="validate"/> <tag name="h3" action="validate"/> <tag name="h4" action="validate"/> <tag name="h5" action="validate"/> <tag name="h6" action="validate"/>
不需要的层级可以直接删掉,比如日常笔记只保留到H3就足够
4. 表格(如果启用了表格插件)
要是你给Quill配置了表格插件,得把表格相关标签都加上,属性只保留安全项:
<tag name="table" action="validate"> <attribute name="border" action="validate" onInvalid="remove"/> <attribute name="cellpadding" action="validate" onInvalid="remove"/> <attribute name="cellspacing" action="validate" onInvalid="remove"/> </tag> <tag name="thead" action="validate"/> <tag name="tbody" action="validate"/> <tag name="tr" action="validate"/> <tag name="th" action="validate"/> <tag name="td" action="validate"/>
5. 文本对齐(谨慎开启)
如果允许用户调整文本对齐,Quill会给段落标签添加style属性,必须严格限制只允许对齐相关的CSS规则:
比如给<p>标签补充配置:
<tag name="p" action="validate"> <attribute name="style" action="validate"> <regexp-list> <regexp value="^text-align:(left|center|right|justify);?$"/> </regexp-list> </attribute> </tag>
style属性风险较高,只开启必要的规则,不要随意扩展其他CSS权限
三、链接属性的安全优化
你现有的<a>标签配置可以进一步完善,提升安全性:
<tag name="a" action="validate"> <attribute name="href" action="validate"> <regexp-list> <regexp value="^https?://.*"/> <!-- 若支持邮件链接,可添加这条规则:<regexp value="^mailto:[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"/> --> </regexp-list> </attribute> <attribute name="title" onInvalid="remove"/> <attribute name="target" action="validate"> <regexp-list> <regexp value="^_blank$"/> </regexp-list> </attribute> <!-- 强制添加rel属性,避免新窗口打开带来的钓鱼风险 --> <attribute name="rel" action="force" value="noopener noreferrer"/> </tag>
四、必须禁止的危险标签
确保政策文件中明确禁用这些高风险标签(AntiSamy默认可能包含,但明确写出更稳妥):
- 脚本类:
script、noscript - 嵌入式内容:
iframe、embed、object、video、audio - 样式类:
style、link - 表单元素:
form、input、button
内容的提问来源于stack exchange,提问作者beeroggy
相关产品推荐
相关产品推荐

