[英]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.