Spring mvc:资源访问外部文件夹

时间:2011-11-07 19:59:12

标签: spring model-view-controller resources tags data-access

我已将媒体(图片和电影)存储在一个文件夹中(例如C:\ test \ tes.png),我正在尝试访问带有以下网址的图片:http://localhost:8080/app/picture/test.png。 为此,我使用了资源标签(春季3),如下所示:

<mvc:resources mapping="/picture/**" location="file:/test" />

当我尝试访问时,出现错误,没有更多细节。

  

未找到请求的资源

我有日志:

  

2011-11-07 20:48:55,241 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - 名为'Family'的DispatcherServlet处理[/Family/photos/testImage2.png的GET请求]   2011-11-07 20:48:55,241 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 请求匹配模式[/photos/testImage2.png]是[/ **]   2011-11-07 20:48:55,241 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 请求[/photos/testImage2.png]的URI模板变量是{}   2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 使用处理程序[org.springframework.web将[/photos/testImage2.png]映射到HandlerExecutionChain。 servlet.resource.DefaultServletHttpRequestHandler@3a779f5e]和4个拦截器   2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - [/Family/photos/testImage2.png]的Last-Modified值为:-1   2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView返回DispatcherServlet,名称为'Family':假设HandlerAdapter已完成请求处理   2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - 已成功完成请求

我当然不是都明白......

另一个问题:我不确定这是好方法。访问外部文件夹中的媒体有哪些其他解决方案?

提前致谢!

1 个答案:

答案 0 :(得分:3)

第一个问题:“映射”

我不是百分百肯定,但我猜,该位置缺少最终/。 将其更改为:

<mvc:resources mapping="/picture/**" location="file:/test/" />

另一个问题:我不确定这是好方法。访问外部文件夹中的媒体有哪些其他解决方案?

以我的拙见,给网站用户提供对文件夹的完全读取权限是非常糟糕的做法。注意,访问权限不仅限于文件夹,而且用户还可以访问所有子文件夹。

*即使您决定忽略此警告,那么您必须测试如果某些人使用调用http://localhost:8080/app/picture/../someFile会发生什么。**我不知道会发生什么,但**使120%确保没有人可以访问picture文件夹之外的任何文件! - 我已经看过spring实现了,春天已经处理了这个问题。* 自Spring 3.2.12,4.0.8,4.1.2资源处理程序确保你不访问指定资源文件夹之外的文件夹。 (SPR-12354: Directory traversal with static resource handling (CVE-2014-3625)