异常场景:

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,修改gatewaysecurity:xss:excludeUrls:添加目标接口路径后重启即可。

思考:

RuoYi-Cloud在网关层通过过滤器实现 XSS 防护,过滤器会对 HTTP 请求的 Body 或 Query 参数 进行检查,识别和处理可能包含恶意脚本的字符串。

为什么富文本内容容易触发 XSS 过滤?

富文本内容通常包含 HTML 标签、CSS 样式或 JavaScript 属性,这些都是 XSS 攻击的常见载体。XSS 过滤器为了防止恶意脚本注入,会对这些内容进行严格检查或转义:

  • 双引号问题:HTML 属性值中的双引号 " 如果未正确转义,可能被 XSS 过滤器处理为 " 或其他形式,导致 JSON 格式不合法。
  • 标签过滤:某些标签或属性(如 <script> 或 onerror)可能被直接移除或转义,改变原始数据结构。
  • 特殊字符:HTML 中的特殊字符(如 <、>、")可能被转义为实体编码(如 &lt;、&gt;、&quot;),破坏 JSON 结构。

在我的解决中,<img> 标签的 src 和 style 属性包含双引号,XSS 过滤器可能尝试对其转义,导致 JSON 字符串中的 " 被替换为 &quot; 或其他字符,触发 JsonParseException。

结论:

XSS 过滤器会对富文本内容(如 标签)中的双引号或 HTML 标签进行转义或过滤,导致 JSON 格式被破坏,触发 JsonParseException,跳过XSS过滤,允许原始 HTML 内容传递,从而解决问题。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐