我有两个问题声纳是可悲的。具有相对路径遍历问题的代码行中的第一个问题,如下所示:
File f = new File(MY_DIR + filename);其中文件名是从请求中获得的参数。
第二行是关于绝对路径遍历的问题,除了前面没有MY_DIR之外,这个问题看起来是一样的。
在这些行之后,我使用一种方法添加了验证检查,该方法使用规范路径确保文件位于MY_DIR目录中,因此现在如下所示:
...
File rootDirFile = new File(MY_DIR);
if (validateFileName(rootDirFile, f)) {
...
private static boolean validateFileName(File targetDir, File fileToCheck) throws IOException {
String targetDirPath = targetDir.getCanonicalPath() + File.separator;
String pathToCheck = fileToCheck.getCanonicalPath();
return pathToCheck.startsWith(targetDirPath);
}但声纳仍在说我在这两条线上有漏洞。怎么告诉它我找到了解决办法?
发布于 2015-06-18 10:10:35
根据您的版本,您可以在5.1之前将问题标记为“不会修复”(这意味着该问题的债务已被接受--自5.1起)或“假阳性”(意思是您认为分析引擎是错误的)。
发布于 2015-06-18 12:57:54
密斯芬德尔是对的。你唯一的选择是标记问题“不会修复”,或者如果在你的平台版本中没有这个问题,“假阳性”。
对于这些安全规则,没有“正确的代码解决方案”。这是因为他们的设计是为了提醒人类安全审计师注意所有潜在的问题。然后由审计师来检查代码,或者关闭问题(“不会修复”),或者向适当的团队提出。
你可以找到更多的在医生里。
https://stackoverflow.com/questions/30909672
复制相似问题