访问控制授权不正确 - 检查马克思 - 文件读/写操作



我正在使用Checkmarx安全工具来扫描我的代码。我得到:

访问控制授权不当

在读/写方法上,同时将数据写入文件输出流。

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

如果有人在检查马克思的特定部分以下变得低严重。

Paths.get(文件名(

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

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

resolve (( ->此方法用于针对此路径解析给定路径。

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

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

但是,如果用户为您提供绝对文件路径怎么办?还是相对的(例如../../.ssh/id_rsa(?

无论谁在发送请求,请求的访问权限实际上是服务器的访问权限(当然,因为此代码在服务器上运行(。

因此,您需要验证用户访问权限,以避免访问控制授权不当

这个答案的例子:

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

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

最新更新