【问题标题】:How to handle both Json and HTML santization from request parameters?如何处理来自请求参数的 Json 和 HTML 净化?
【发布时间】:2017-06-02 06:56:31
【问题描述】:

如何正确编码查询参数。我通过进行清理的 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 行,我最终会得到 {&quot name &quot: &quot Mav &quot}

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

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

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

【问题讨论】:

    标签: java json security antisamy


    【解决方案1】:

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

    当参数包含要解码的 json 时,不要在其上使用 antisamy。

    当参数包含您将输出为 html 的文本时,请在其上使用 antisamy。

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

    Antisamy 有一个特殊的用途。处理您希望允许包含 HTML 标记的文本。不要在任何其他数据上使用 antisamy。相反,请确保在输出从用户处收到的任何您不明确允许包含 HTML 标记的文本时,对 html 语法进行转义。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 2023-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多