首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >严重-对于使用URL模式[/*]的安全约束,HTTP方法[POST GET]是不存在的

严重-对于使用URL模式[/*]的安全约束,HTTP方法[POST GET]是不存在的
EN

Stack Overflow用户
提问于 2019-05-22 13:22:18
回答 1查看 5.6K关注 0票数 1

启动Tomcat时,我会得到这个错误:

对于具有/*模式的安全约束,HTTP是不公开的。

这是什么原因?

我认为这是一个与this不同的问题。

我的web.xml看起来像:

代码语言:javascript
复制
<security-constraint>
    <display-name>Restrict resources</display-name>
    <web-resource-collection>
        <web-resource-name>/resources dir</web-resource-name>
        <url-pattern>/resources/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Whitelist</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method-omission>GET</http-method-omission>
        <http-method-omission>POST</http-method-omission>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

因此,我试图禁止除GETPOST以外的所有方法(请参阅)。然而,一些方法(PUTDELETEOPTIONS.)似乎返回了一个"302 Found“而不是一个自动403,不知道为什么(缺少请求参数?)

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 09:06:07

在我看来,您实际上也禁止GETPOST。在第二个<auth-constraint />部分中,不要使用空的<security-constraint>,而是尝试以下操作:

代码语言:javascript
复制
<auth-constraint>
  <role-name>*</role-name>
</auth-constraint>

此外,您可能需要为<url-pattern>/*</url-pattern>的未发现方法添加另一个“拒绝”部分。但是,如果您使用的是Servlet 3.1+ (例如Tomcat8.5.x),您可以简单地使用这个标记,而不是使用另一个<security-constraint>部分:

代码语言:javascript
复制
<deny-uncovered-http-methods />

然后,确保您的web.xml确实定义了Servlet3.1,例如:

代码语言:javascript
复制
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56257890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档