【问题标题】:web.xml security: how to get root unrestricted, but all else restricted?web.xml 安全性:如何让 root 不受限制,但其他一切都受到限制?
【发布时间】:2013-02-24 00:03:00
【问题描述】:

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

我面临的问题是,当使用 / 或 /* 作为限制访问的默认匹配项来限制访问时,根文件夹不能再不受限制了。在根目录下,我希望在访问域名时出现默认的“index.html”。任何建议表示赞赏。

顺便说一下,我用的是jetty 6.1.6

这是我的 web.xml 文件的 sn-p:

<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>

提前致谢

【问题讨论】:

    标签: java jetty security web.xml


    【解决方案1】:

    在 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 那么 web.xml 中任何专门授予访问权限的条目是否仍然有效?
      猜你喜欢
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2021-12-17
      • 2014-09-01
      • 1970-01-01
      • 2019-06-27
      相关资源
      最近更新 更多