java - 在java中传递sonar的PT_RELATIVE_PATH_TRAVERSAL

标签 java sonarqube path-traversal

Sonar 有两个令人难过的问题。具有相对路径遍历问题的代码行中的第一个代码如下所示:

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);
}

但是 Sonar 仍然说我在这两条线上有一个漏洞。如何告诉它我已经找到了解决方案?

最佳答案

米斯芬德尔是对的。您唯一的选择是将问题标记为“无法修复”,或者如果您的平台版本不支持该问题,则标记为“误报”。

这些安全规则没有“正确的代码解决方案”。这是因为它们旨在提醒人类安全审计员注意所有潜在问题。然后由审计员检查代码并关闭问题(“无法修复”)或向适当的团队提出。

您可以找到更多in the docs .

关于java - 在java中传递sonar的PT_RELATIVE_PATH_TRAVERSAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909672/

相关文章:

git - sonarqube - 添加自签名证书以连接 git

java - 在 Java(或 Scala)中过滤向上路径遍历

c# - 如何修复 SCS0018?

Sonarqube 5 - 如何标记假阳性?

java - Android Ui 未在线程中更新

java - 创建 Java 类来接收 JSON 对象

java - 为什么exec :java work and exec:exec fail?

java - 从 Jenkins/Hudson 插件运行时如何从 Sonar 报告中的 cobertura 分析中排除类?

.net - 如何对 IIS 中托管的此服务执行路径遍历攻击?

java - WSO2 治理标签