ESAPI.encoder().canonicalize & json string



在JSON字符串上使用ESAPI.encoder().canonicalize

输入:

{ "key1":"some data b"h" }

输出:

{ "key1":"somedata b"h" }

输出不再是有效的JSON字符串。

我如何保留原始"才能拥有有效的JSON字符串以进行进一步处理?

ESAPI.encoder().canonicalize使用多个编解码器解码字符串。默认情况下它可以做类似的事情:

DefaultEncoder encoder = new DefaultEncoder(Arrays.asList(
    HTMLEntityCodec.class.getName(),
    PercentCodec.class.getName(),
    JavaScriptCodec.class.getName()
));
encoder.canonicalize(...);

"替换"的任何发生的JavaScript编解码器。使用JSON数据,最终会破坏输入。而是可以创建不包括JavaScriptCodecDefaultEncoder的实例,也可以根本不在其上运行规范化。它不了解JSON格式,因此规范化不做任何有用的事情。

为了防止XSS,您需要谨慎对待如何将JSON字符串传递给客户端,以及如何使用其内容。这包括在输出数据时编码数据,并检查InnerHTML等到DOM的任何内容

相关内容

  • 没有找到相关文章

最新更新