【发布时间】:2013-12-13 02:07:46
【问题描述】:
在 JSF 2.2 之前,诸如 javascript、css 和复合组件之类的资源将放置在 /resources 文件夹中的 Web 存档的根目录中。 WEB-INF 中的安全约束将伴随此设置以防止直接访问:
<security-constraint>
<display-name>Restrict direct access to JSF resources</display-name>
<web-resource-collection>
<web-resource-name>JSF resources</web-resource-name>
<url-pattern>/resources/*</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
然而,在 JSF 2.2 中,您可以简单地将资源文件夹放在 WEB-INF 中:/WEB-INF/resources。这为资源提供了直接访问的隐式保护。
WEB-INF 根据Tomcat documentation 和IBM documentation 将其描述为存储配置文件的文件夹。将非配置资源放在WEB-INF 中只是为了获得WEB-INF 目录的保护似乎是一种黑客行为。
两种存储资源的方法在效果上是否相同?它们对这两种方法有什么具体的缺点吗?
【问题讨论】:
-
破解?为什么?把它放在 root/resources/ 下只会给你自己保护它的额外工作。有一个 WEB-INF 的好处的一半是保护。此外,您不受 WEB-INF 的限制;您还可以将您的资源打包到 META-INF 中。你所接受的是主要是基于意见的
-
我质疑这是否是黑客攻击,因为我的印象是 WEB-INF 文件夹是用于配置/元数据文件的。如果不是,
WEB-INF文件夹的具体用途是什么? -
就我个人而言,我从未将 WEB-INF 文件夹中的资源视为 hack。但你是对的,Servlet (3.0) 规范强调了该文件夹对于“配置信息”的重要性。顺便说一句,您在哪里找到了 JSF 2.2 规范中对
/WEB-INF/resources的建议?我在那里找不到那种东西。