在WEB-INF下移动资源

时间:2012-08-23 08:54:46

标签: servlets web.xml web-inf

我有一个包含数百个HTML,JavaScript和图像文件的Web应用程序。这些文件位于根目录下:

my_root--
    -- html
    -- js
    -- images

这些文件夹包含一些子文件夹。

出于安全原因,我需要将所有这些资源移到WEB-INF文件夹下,这样它们就无法直接访问。

目前,JSP和servlet文件已经在WEB-INF文件夹下。

对于我来说,安全地移动WEB-INF下的所有HTML / JavaScript /图像文件夹而不破坏所有链接/转发到这些文件夹中的资源并确保无法直接访问这些资源的最简单方法是什么?

我正在使用WebSphere和WebLogic服务器。

2 个答案:

答案 0 :(得分:9)

  

对于我来说,安全地移动WEB-INF下的所有html / js / images文件夹而不破坏所有链接/转发到这些文件夹中的资源并确保这些资源无法直接访问的最简单方法是什么?< / em>的

你在这里犯了一个错误的错误。无论如何,HTML / JS /图像(和CSS)资源需要可以直接访问。对于JSP而言,故事是不同的,其中一些(如果不是全部的话)需要由servlet预处理(例如,从DB检索一些列表以便在表中显示)。如果直接访问这些JSP,那么将完全跳过该servlet步骤,这绝对不是您想要的(JSP最终为“空”;没有来自DB的任何数据)。这就是为什么它们应隐藏在/WEB-INF中以防止直接访问而不首先通过预处理servlet。此外,在基于servlet的MVC框架的情况下,这种方式将跳过整个MVC框架过程(收集请求参数,转换/验证它们,更新模型值,调用动作等)。

您的具体功能要求并不十分清楚(整个问题本身没有任何意义;答案只是“不要那样做”),但如果实际上想要限制访问对于静态资源而言,根本不需要servlet对某些用户进行预处理,那么您需要实现一个身份验证/登录系统。您可以使用容器管理的身份验证或为Filter生成{{1}}。

答案 1 :(得分:0)

你可以使用像notepad ++这样非常简单的工具并使用findAndReplace功能。 Eclipse也可以这样做,但有效地找到每个引用都很棘手。

请注意,还有其他方法可以阻止用户访问您的图片。将事物放在原处并指示websphere停止从图像文件夹中提供这些图像可能更容易