我们有一个接受用户网址的应用程序。这些数据需要验证,我们正在为此目的使用ESAPI。但是,我们正在努力处理包含&符号的网址。
当ESAPI在验证之前规范化数据时,会出现问题。例如,URL中的& pid = 123变为πd= 123。由于π未列入白名单,因此验证失败。
我已经尝试过对它进行编码,但ESAPI比这更聪明,并且规范化以避免双重编码和混合编码。我有点难过,我不知道该怎么办。
答案 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)