ESAPI规范化畸形网址

时间:2014-04-24 11:35:11

标签: java validation owasp canonicalization esapi

我们有一个接受用户网址的应用程序。这些数据需要验证,我们正在为此目的使用ESAPI。但是,我们正在努力处理包含&符号的网址。

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

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

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。就我而言,对于字符串\ fgdf \ gghfh \ fgh \ dff 规范化方法将其形成为:

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

案例2:规范化(字符串,假) - >输入= fgdfgghfhfghdff 在这种情况下,它因字符串验证失败了吗?字符不是白色字符列表的一部分。

我终于成功了。以下是代码:

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

false的最后一个参数会关闭默认启用的内部规范化。

我希望这会有所帮助。

答案 1 :(得分:0)

此问题是ESAPI中的known bug。我开始致力于解决它,但由于我不知道补丁什么时候会被提交,我只能在我对OP的评论中引用你的 a 解决方法,在这里我链接了类似的答案,使用java.net.URIjavax.ws.rs.core.UriBuilder来解析/分解URL,规范化各个部分,然后重新构建URL。我会重新发布链接here。我提出的例子是在OP切换主题问题后的问题的后半部分。