You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OWASP Java HTML Sanitizer允许带样式的<span>和<div>?

解决OWASP Java HTML Sanitizer中allowStyling()导致失效的问题

你的问题出在allowWithoutAttributes("span")和allowStyling()的配置冲突上:

  • allowWithoutAttributes("span")强制要求元素不能携带任何属性,否则会被过滤
  • allowStyling()会为所有已允许的元素开启style属性支持,这就导致因为带有style属性而触发过滤规则被移除

要实现全局允许样式且保留元素,只需调整配置:

  1. 移除allowWithoutAttributes("span")——默认情况下,允许的元素无论是否带属性(只要属性被允许)都会被保留
  2. 保留allowStyling()来全局开启所有已允许元素的style属性支持,无需逐个元素手动配置

调整后的代码:

private static final PolicyFactory POLICY_DEFINITION = new HtmlPolicyBuilder()
    .allowElements("span")
    // 如果需要支持其他元素(比如p、div),直接添加到allowElements中即可
    // .allowElements("span", "p", "div")
    .allowStyling()
    .toFactory();

这样配置后:

  • 带style属性的会被正常保留
  • 无属性的也能正常通过过滤
  • 所有后续添加到allowElements中的元素,都会自动支持style属性,无需重复配置

内容的提问来源于stack exchange,提问作者Stephane Grenier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:32:33