java - 文件名的路径操作错误修复

标签 java owasp fortify fortify-source

我有一段代码,我必须读取一个文件以获取其可能的内容。

我遇到了同样的路径操作错误。

PFB代码:

while ((ze = zis.getNextEntry()) != null) {
    String fileName = ze.getName();
    String esapiFileName = ESAPI.encoder().canonicalize(fileName);
    boolean esapiValidFileName = ESAPI.validator().isValidFileName("upload", esapiFileName, false);
    String _completefileNamePath = null;
    if (esapiValidFileName) {
      _completefileNamePath = _destination + esapiFileName;
      // Below line having Path Manipulation error
      FileOutputStream fos = new FileOutputStream(new File(_completefileNamePath).getCanonicalFile());
      // Path Manipulation error ends
      while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
        fos.write(buffer, 0, size);
      }// while
      fos.flush();
      fos.close();
      zis.closeEntry();
    }
}

最佳答案

你的路径是相对路径还是绝对路径?

顺便说一句,在打开 FileOutputStream 之前,您实际上不需要获取规范文件:

FileOutputStream fos = new FileOutputStream(_completefileNamePath);

FileOutputStream fos = new FileOutputStream(new File(_completefileNamePath));

import java.nio.file.Files;
import java.nio.file.Paths;

while ((ze = zis.getNextEntry()) != null) {
    String fileName = ze.getName();
    String esapiFileName = ESAPI.encoder().canonicalize(fileName);
    boolean esapiValidFileName = ESAPI.validator().isValidFileName("upload", esapiFileName, false);
    String _completefileNamePath = null;
    if (esapiValidFileName) {
        _completefileNamePath = _destination + esapiFileName;
        // optional: Files.createDirectories(Paths.get(_completefileNamePath).getParent());
        Files.copy(zis, Paths.get(_completefileNamePath));
        zis.closeEntry();
    }
}

关于java - 文件名的路径操作错误修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30099996/

相关文章:

rest - OWASP 安全指南保护 rest api 免受点击劫持,它们准确吗?

java - 强化错误: Unexpected Exception During Dataflow Analysis

c++ - 我的 delete[] 有什么问题?

java - 如何在运行 testng 时进行编程分析

javascript - 哪个 XSS OWASP 规则

java - 将 xml 定义中的附加 bean 注册到已初始化的应用程序上下文中

java - 允许某些字符不受 ESAPI 编码器的影响吗?

javascript - 强化投诉 "Hardcoded Encryption Key"mozila pdf.js

java - JAX WS异步客户端: capture WS-Addressing 202 accepted

java - hibernate中属性名、逻辑名和物理名的区别