如何处理请求参数中的 Json 和 HTML santization?

How to handle both Json and HTML santization from request parameters?

如何正确编码查询参数。我通过进行清理的 Anti Samy 传递数据。接下来我需要传递清理后的字符串 unescapeHtml4 方法。因为有时我有 Json 作为我的请求参数(见下面的示例 1)。

目前我的代码如下:

  String str = StringEscapeUtils.unescapeXml(xml);
  ClearResult cr = antiSamy.scan(str); 
  String cleanStr = cr.getCleanHTML();
  String s = StringEscapeUtils.unescapeHtml4(cleanStr);

示例 1:Json 作为请求:

如果我删除第 4 行,我最终会得到 {" name ": " Mav "}

示例 2:以下脚本的转义结果:< script >alert("hi") < script >

如果我保留第 4 行,我很容易受到 XSS 攻击。

如何解决这个问题?我想同时处理 JSON 和 HTML 请求参数。任何帮助将不胜感激。

根据参数应包含的内容/您计划对数据执行的操作来处理参数。

当参数包含您要解码的 json 时,请不要对其使用反义词。

当参数包含您将输出为 html 的文本时,请对其使用反义词。

当一个参数包含 json 时,它本身包含一些您将输出为 html 的值,然后首先将参数解码为 json,然后对各个值使用 antisamy来自您计划输出为 html.

的 json

Antisamy 有特殊用途。处理您希望允许包含 HTML 标签的文本。不要对任何其他数据使用反义词。相反,请确保在输出您不想明确允许包含 HTML 标记的用户的任何文本期间转义 html 语法。

据我所知,如果你想要只有一个函数处理 JSON 和 HTML,你最好在之后手动替换转义码。其他选择是将 JSON 与 HTML 分开。

这取决于要求和完整的场景。