我希望为我的网站用户提供访问JAR文件中提供的一些静态资源的权限。
我无法提供用户应该能够访问的所有文件的列表,但我可以确保它们都包含在JAR的子目录中,例如:
public-access/file-1
public-access/file-2
public-access/sub-dir/file-3
然后将通过以下方式访问这些文件:
this.getClass().getResource("/public-access/" + requestedFile);
是否有推荐的方法来阻止路径遍历攻击?这是为了防止恶意用户请求例如被称为文件的文件。 ../secret
或sub-dir/../../secret
答案 0 :(得分:1)
查看安全管理器:http://docs.oracle.com/javase/tutorial/essential/environment/security.html
我认为它完全支持您的需求,只需指定不允许打开给定路径的资源。
答案 1 :(得分:1)
您需要的是通过覆盖SecurityManager来定义自定义安全策略。 查看本教程,它很好地解释了如何创建一个并注册。
Providing Your Own Security Manager
希望这有帮助