【发布时间】:2019-09-07 22:59:45
【问题描述】:
有没有办法在 Spring Boot 中配置 Jackson,以便我可以 HTML 转义 @RequestBody 中的所有值?我尝试过使用序列化程序,但据我所知,它们被定义为特定的类。我需要一个过滤器来处理在 JSON 中发送的所有值,并使用以下内容对它们进行转义:
StringEscapeUtils.escapeHtml4(value)
谢谢
【问题讨论】:
-
这看起来是个非常糟糕的主意。你为什么要这样做?如果有人发送一些文本,然后存储该文本。如果您在 HTML 页面中显示此文本,请在显示之前对其进行转义。如果它需要在不使用 HTML 的富客户端中以其他方式显示),请按原样显示:您真的不想取消转义。
-
@JBNizet 我没有任何 UI 使用我的 API,它都是机器对机器的。重点是防止 XSS 攻击。你将如何防止你的后端受到这些攻击?而且,即使这是一个我认为不是的坏主意,有人知道答案吗?
-
如果文本从不显示在任何地方,你怎么可能受到 XSS 攻击?如果是,则在 html 页面中显示文本时对文本进行 html 转义。如果在 XML 文档中使用它,则 XML 转义它。如果它被用于丰富的应用程序等,请不要逃避它。
-
Man in the Middle 时可以注入 XSS。您不想将脚本存储在数据库中。实际上,大多数用于检测 API 漏洞的工具都会立即发现它。
-
OWASP 根本不这么认为。您链接到的文章说:本文将 HTML 页面视为模板,其中允许开发人员放置不受信任的数据 [...] 规则 #1 - 在将不受信任的数据插入 HTML 元素内容之前进行 HTML 转义。因此,它在将不受信任的数据显示在 HTML 模板中 之前对其进行转义。不是从用户那里收到文本时。
标签: java spring spring-boot jackson jackson-databind