ESAPI规范化错误url



我们有一个接受用户URL的应用程序。这些数据需要验证,因此我们使用ESAPI。然而,我们正在努力解决包含"与"符号的URL问题。

当ESAPI在验证前对数据进行规范化时,就会出现此问题&例如,URL中的pid=123变为πd=123。由于π未被列入白名单,因此验证失败。

我已经尝试过对它进行编码,但ESAPI比这更聪明,并且进行了规范化以避免双重编码和混合编码。我有点不知所措,不知道该怎么办。

我也遇到了同样的问题。在我的例子中,对于字符串\fgdf\gghfh\fgh\dff规范化方法将其形成:

案例1:规范化(字符串)-->入侵-在\fgdf\gghfh\fgh\dff 中检测到多个(2x)编码

案例2:规范化(string,false)-->input=fgdfgghfhfghdff在这种情况下,它的字符串验证失败了?字符不在字符白名单中。

我终于设法使它工作起来了。以下是代码:

    value = ESAPI.encoder().encodeForURL(value);
    value = value.replaceAll("", "");
    isSafe = validator.isValidInput("APPNAME", value, "URLSTRING", 255, true, false);

false的最后一个参数关闭默认情况下打开的内部规范化。

我希望这能有所帮助。

此问题是ESAPI中的一个已知错误。我开始着手解决它,但由于我不知道什么时候会提交补丁,我只能在我对OP的评论中向您推荐一个解决方法,在这里我链接了一个类似的答案,使用java.net.URIjavax.ws.rs.core.UriBuilder来解析/分解URL,规范化片段,然后重建URL。我将把链接转发到这里。我举的例子是在问题的后半部分,OP在问题中间切换了主题。

最新更新