使用Class.getResource()时如何防止路径遍历攻击

时间:2013-02-21 09:18:30

标签: java security jar static-resource

我希望为我的网站用户提供访问JAR文件中提供的一些静态资源的权限。

我无法提供用户应该能够访问的所有文件的列表,但我可以确保它们都包含在JAR的子目录中,例如:

public-access/file-1
public-access/file-2
public-access/sub-dir/file-3

然后将通过以下方式访问这些文件:

this.getClass().getResource("/public-access/" + requestedFile);

是否有推荐的方法来阻止路径遍历攻击?这是为了防止恶意用户请求例如被称为文件的文件。 ../secretsub-dir/../../secret

2 个答案:

答案 0 :(得分:1)

查看安全管理器:http://docs.oracle.com/javase/tutorial/essential/environment/security.html

我认为它完全支持您的需求,只需指定不允许打开给定路径的资源。

答案 1 :(得分:1)

您需要的是通过覆盖SecurityManager来定义自定义安全策略。 查看本教程,它很好地解释了如何创建一个并注册。

Providing Your Own Security Manager

希望这有帮助