web.xml安全性:如何让root不受限制,但所有其他限制?

时间:2013-03-08 12:32:26

标签: java jetty security web.xml

我希望能够无限制地访问Web服务器根目录(欢迎页面),但是 - 默认情况下 - 限制访问所有解析为子文件夹的URL。

我遇到的问题是,当使用/或/ *限制访问作为限制访问的默认匹配时,根文件夹不能再不受限制了。在根上有默认的'index.html',我想在访问域名时出现。任何建议都表示赞赏。

顺便说一下,我正在使用jetty 6.1.6

这是我的web.xml文件的片段:

<servlet-mapping>
  <servlet-name>SomeServlet</servlet-name>
  <url-pattern>/servlet1</url-pattern>
</servlet-mapping>

<security-constraint>
  <web-resource-collection>
  <web-resource-name>ForbidDefaultAccess</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint/>
</security-constraint>

<security-constraint>
  <web-resource-collection>
  <!-- unauthorized -->      
    <web-resource-name>GrantAccess</web-resource-name>
    <url-pattern>/some_dir/*</url-pattern>
    <url-pattern>/servlet1</url-pattern>
    <url-pattern>/</url-pattern>      
  </web-resource-collection>
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>AuthorizedResources</web-resource-name>
    <url-pattern>/cfg/*</url-pattern>
    <url-pattern>/fileupload/*</url-pattern>
    <url-pattern>/list/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>UserRole</role-name>
  </auth-constraint>
</security-constraint>

提前致谢

2 个答案:

答案 0 :(得分:3)

Java J2EE 6中可以使用白名单

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Disable unneeded HTTP methods by 403 Forbidden them</web-resource-name>
        <url-pattern>*</url-pattern>
        <http-method-omission>GET</http-method-omission>
        <http-method-omission>HEAD</http-method-omission>
        <http-method-omission>POST</http-method-omission>
        </web-resource-collection>
    <auth-constraint />
</security-constraint>

参考:https://blogs.oracle.com/nithya/entry/new_security_features_in_glassfish

答案 1 :(得分:0)

您可以创建Filter,应用于所有网址。让它检查URL的深度(基本上是斜杠的数量),并相应地允许或拒绝访问资源,在第一种情况下使用chain.doFilter(),在第二种情况下使用HTTP 403 error