【发布时间】:2015-11-15 05:38:02
【问题描述】:
我想截获从 Spring MVC Rest Controller 发回的 JSON,并通过一个确保其有效且 HTML 转义任何不可靠字符的清理程序运行它。 (可能是OWASP JSON Sanitizer)
我们使用 Jackson HTTP 消息转换器将 @ResponseBody 转换为 JSON,据我所知,一旦我将对象作为 @ResponseBody 返回,我就会失去对它的控制。
是否有一种明智的方法可以将 JSON 作为字符串截获以在其上运行清理代码?
我目前正在研究三种途径:
- 编写过滤器和 ResponseWrapper,在 JSON 发送回客户端之前对其进行清理。
- 以某种方式扩展 JSON 映射器以提供经过净化的 JSON。
- 编写处理程序拦截器并使用它来修改响应。
我不确定这两种方法是否可行,或者是否有更明智的第三种选择。
【问题讨论】:
-
为什么要对 JSON 进行 HTML 转义? JSON 应该包含未格式化的数据,因此任何类型的客户端都可以使用它来显示它想要的任何内容。如果客户端选择在 HTML 中插入此数据,那么客户端有责任正确执行此操作。不是服务器。
-
我对这个问题的理解是,我们希望确保任何恶意插入的数据在后端请求时都不会做任何调皮的事情。我在第 11 个小时被叫来,并被告知确保以下字符在 JSON 消息的输出中被转义:%、&、*、$、#、@、!、\、/、:、*、 ?, ", , |, ;, '
标签: java json spring-mvc owasp