限制用户访问Java EE应用程序中的文件夹

时间:2012-07-14 14:17:06

标签: java servlets restriction

如何隐藏我的网络服务器上的文件?我有一个目录“files”,我在其中存储了一些pdf文件。我不想让用户通过这样的URL访问文件:

www.example.com/files/1.pdf

而不是这个我想用DB中的id映射每个文件,让用户像这样访问它:

 www.example.com/fileId=5569a

用户无法访问files目录。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

这是一个非常正确的答案

首先,您应该使用部署描述符(web.xml)拒绝访问该目录

<security-constraint>
   <display-name>excluded</display-name>
   <web-resource-collection>
      <web-resource-name>No Access</web-resource-name>
      <url-pattern>/files/*</url-pattern>
   </web-resource-collection>
   <web-resource-collection>
      <web-resource-name>No Access</web-resource-name>
      <url-pattern>/files/*</url-pattern>
      <http-method>DELETE</http-method>
      <http-method>PUT</http-method>
      <http-method>HEAD</http-method>
      <http-method>OPTIONS</http-method>
      <http-method>TRACE</http-method>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint />
   <user-data-constraint>
      <transport-guarantee>NONE</transport-guarantee>
   </user-data-constraint>
</security-constraint>

既然您的文件是安全的,您必须使用url-mapping&#39; /&#39;来实现Servlet。这将检查以找到&#39; fileId&#39;请求中的参数。如果找到它,servlet将向用户提供文件下载,否则它会将用户重定向到主页。

要实现servlet,请参阅帖子Call a servlet on click of hyperlink

要实施文件下载,请参阅我的帖子Is there a common way to download all types of files in jsp?