【问题标题】:Exclude css & image resources in web.xml Security Constraint排除 web.xml 安全约束中的 css 和图片资源
【发布时间】:2012-11-21 16:24:08
【问题描述】:

我正在使用 JSF2.1 和 Glassfish 3.1.2。

我指定一个安全约束来阻止一切:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Secured Content</web-resource-name>
        <!-- Block all -->
        <url-pattern>/*</url-pattern>
    </web-resource-collection>

    <!-- only users with at least one of these roles are allowed to access the secured content -->
    <auth-constraint>
        <role-name>ADMINISTRATOR</role-name>
    </auth-constraint>
</security-constraint>

并有另一个允许访问页面和资源的子集:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Open Content</web-resource-name>
        <!-- Allow subscribe -->
        <url-pattern>/subscribe/*</url-pattern>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </web-resource-collection>
    <!-- No Auth Contraint! -->
</security-constraint>

这很好用。然而,是下面的

<url-pattern>/javax.faces.resource/*</url-pattern>

允许所有资源的正确方法是什么?

我只是通过查看 Facelets 注入 xhtml 的 url 来做到这一点的。这种方法是否存在安全漏洞?

谢谢。

【问题讨论】:

    标签: security jsf jakarta-ee facelets web.xml


    【解决方案1】:

    它必须是ResourceHandler#RESOURCE_IDENTIFIER 常量的值。另见其javadoc

    RESOURCE_IDENTIFIER

    public static final java.lang.String RESOURCE_IDENTIFIER

    Resource#getRequestPath 将此常量的值作为 URI 的前缀返回。 handleResourceRequest(javax.faces.context.FacesContext) 在请求 URI 中查找此常量的值,以确定该请求是资源请求还是视图请求。

    另见:

    Constant Field Values

    constant field values 表示以下内容:

    public static final java.lang.String    RESOURCE_IDENTIFIER    "/javax.faces.resource"
    

    所以,您对 URL 模式的看法是完全正确的。不存在安全漏洞,前提是您不将敏感信息放在由 JSF 资源处理程序处理的公共 Web 内容的 /resources 文件夹中。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 2012-11-23
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多