gpt4 book ai didi

Java SecurityManager 防止 .. 目录使用

转载 作者:行者123 更新时间:2023-11-28 22:02:45 25 4
gpt4 key购买 nike

我想禁止 spring webapp(在 tomcat 中运行)使用任何包含“..”的文件路径。

显然,首先要做的是在用户信息被用于文件路径之前对其进行清理的地方。但是,应用程序中有数百个地方进行文件访问,手动验证所有这些地方是否正确实现需要花费大量精力。

我只想做一些事情,比如添加或修改 Java SecurityManager,以防止文件名中包含“..”。

我的第一次尝试是创建我自己的 SecurityManager 并覆盖 checkRead 和 checkWrite 等方法,但事实证明这还不够。这些方法的默认实现似乎无论如何都不允许一切,所以我怀疑从头开始创建一个方法并不是真正应该完成的方式。

我想另一种可能性是使用 aspectj,但如果我能让 SecurityManager 工作,那似乎是个更好的主意。

那么,要禁止在所有文件名中使用“..”,我能做的最简单的事情是什么?是否有任何我可以安装和使用的 SecurityManager 实现,这些实现旨在使 Web 应用程序更安全?

最佳答案

Using .. 意味着它使用一些父目录。您可以使用 SecurityManager 来检查文件是否仅在您允许的目录中时才被允许:

@Override
public void checkPermission(Permission perm) {
if( perm instanceof FilePermission ) {
Path path = Paths.get(perm.getName()).normalize().toAbsolutePath();
//TODO: check that path is in one of allowed directories
if( !path.toString().startsWith( myAllowedRootDir ) )
throw new SecurityException("Not allowed");
}
}

关于Java SecurityManager 防止 .. 目录使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com