若依spring cloud JSON parse error: Unexpected character (‘a‘ (code 97)): ...
摘要:RuoYi-Cloud网关的XSS过滤器在处理包含富文本的POST请求时,因富文本中的HTML标签、双引号等特殊字符被转义或过滤,导致JSON格式被破坏,触发JsonParseException。解决方案是在Nacos配置中排除该接口路径的XSS检查,允许原始HTML内容通过。这表明XSS防护与富文本内容存在天然冲突,需针对性处理特殊接口。(149字)
异常场景:
1.Post接口
2.@Requestbody
3.包含富文本属性
4.富文本为HTML内容
4.内容包含文字、图片...
异常信息:
JSON parse error: Unexpected character ('a' (code 97)): was expecting comma to separate Object entries; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('a' (code 97)): was expecting comma to separate Object entries\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 9, column: 106]
解决方案:
在nacos,修改gateway中security:xss:excludeUrls:添加目标接口路径后重启即可。
思考:
RuoYi-Cloud在网关层通过过滤器实现 XSS 防护,过滤器会对 HTTP 请求的 Body 或 Query 参数 进行检查,识别和处理可能包含恶意脚本的字符串。
为什么富文本内容容易触发 XSS 过滤?
富文本内容通常包含 HTML 标签、CSS 样式或 JavaScript 属性,这些都是 XSS 攻击的常见载体。XSS 过滤器为了防止恶意脚本注入,会对这些内容进行严格检查或转义:
- 双引号问题:HTML 属性值中的双引号 " 如果未正确转义,可能被 XSS 过滤器处理为 " 或其他形式,导致 JSON 格式不合法。
- 标签过滤:某些标签或属性(如 <script> 或 onerror)可能被直接移除或转义,改变原始数据结构。
- 特殊字符:HTML 中的特殊字符(如 <、>、")可能被转义为实体编码(如 <、>、"),破坏 JSON 结构。
在我的解决中,<img> 标签的 src 和 style 属性包含双引号,XSS 过滤器可能尝试对其转义,导致 JSON 字符串中的 " 被替换为 " 或其他字符,触发 JsonParseException。
结论:
XSS 过滤器会对富文本内容(如 标签)中的双引号或 HTML 标签进行转义或过滤,导致 JSON 格式被破坏,触发 JsonParseException,跳过XSS过滤,允许原始 HTML 内容传递,从而解决问题。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)