我们有一个接受用户URL的应用程序。这些数据需要验证,为此我们使用了ESAPI。然而,我们正在与包含符号的URL进行斗争。
当ESAPI在验证之前将数据规范化时,就会出现问题。例如,URL中的&pid=123就变成了πd=123。由于π未被白化,验证失败。
我尝试过对它进行编码,但ESAPI比它更聪明,并进行规范化,以避免双重编码和混合编码。我有点为难,我不知道该怎么做。
发布于 2014-05-11 22:32:22
发布于 2014-04-28 15:14:42
我也面临着同样的问题。在我的示例中,对于string \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的最后一个参数关闭默认打开的内部规范化。
我希望这能帮到你。
https://stackoverflow.com/questions/23267759
复制相似问题