排除css& web.xml中的图像资源安全约束

时间:2012-12-04 04:42:24

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

我正在使用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来做到这一点。这种方法有安全漏洞吗?

感谢。

1 个答案:

答案 0 :(得分:6)

必须是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资源处理程序处理的公共webcontent的/resources文件夹中。

相关问题