【问题标题】:Where should JSF 2.2 resources be placed: WEB-INF or rootJSF 2.2 资源应该放在哪里:WEB-INF 或 root
【发布时间】: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 documentationIBM 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 的建议?我在那里找不到那种东西。

标签: java jsf jsf-2.2


【解决方案1】:

您可以安全地将资源放在WEB-INF下,这样您就不会忘记保护它不被直接访问,仅此而已!如果你想在root中保持保护,效果是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2015-06-08
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多