繁体   English   中英

不正确的访问控制授权 -Checkmarx - 文件读/写操作

[英]Improper Access Control Authorization -Checkmarx - File Read/Write Operation

我正在使用 Checkmarx 安全工具来扫描我的代码。 我正进入(状态:

访问控制授权不当

在将数据从文件写入 output stream 时的读/写方法。

private ByteArrayOutputStream createToByteArray(String fileName) throws IOException {
        byte[] buf = new byte[1024];
        try (InputStream is = Files.newInputStream(Paths.get(fileName))) {
            int len = is.read(buf);
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            while (len != -1) {
                os.write(buf, 0, len);
                len = is.read(buf);
            }
            return os;
        }
    }

如果有人在 checkmarx 的特定部分以下严重性降低。

Paths.get(文件名)

然后尝试使用 resolve() 方法,例如

Paths.get(fileName).resolve("")

resolve () -> 此方法用于根据此路径解析给定路径。

有关 resolve() 的更多信息,请参阅

您希望用户可以通过path文件系统中读取文件,并将其转换为ByteStream 美好的。

但是如果用户给你一个绝对文件路径怎么办? 还是相对的(例如../../.ssh/id_rsa )?

不管是谁发出的请求,请求的访问权限其实就是服务器的访问权限(当然是因为这段代码是在服务器上运行的)。

因此,您需要验证用户访问权限,以避免Improper Access Control Authorization

这个答案的例子:

if (user.equals("admin")){
   try (InputStream is = Files.newInputStream(Paths.get(fileName))) {
      ...
   }
}

另外,我的建议是从filename输入路径中删除任何相对路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM