Springboot 内置tomcat禁止不安全HTTP方法
1、在tomcat的web.xml中可以配置如下内容
让tomcat禁止不安全的HTTP方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< security-constraint > < web-resource-collection > < url-pattern >/*</ url-pattern > < http-method >PUT</ http-method > < http-method >DELETE</ http-method > < http-method >HEAD</ http-method > < http-method >OPTIONS</ http-method > < http-method >TRACE</ http-method > </ web-resource-collection > < auth-constraint > </ auth-constraint > </ security-constraint > < login-config > < auth-method >BASIC</ auth-method > </ login-config > |
2、Spring boot使用内置tomcat
没有web.xml配置文件,可以通过以下配置进行,简单来说就是要注入到Spring容器中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
@Configuration public class TomcatConfig { @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcatServletContainerFactory = new TomcatEmbeddedServletContainerFactory(); tomcatServletContainerFactory.addContextCustomizers( new TomcatContextCustomizer(){ @Override public void customize(Context context) { SecurityConstraint constraint = new SecurityConstraint(); SecurityCollection collection = new SecurityCollection(); //http方法 collection.addMethod( "PUT" ); collection.addMethod( "DELETE" ); collection.addMethod( "HEAD" ); collection.addMethod( "OPTIONS" ); collection.addMethod( "TRACE" ); //url匹配表达式 collection.addPattern( "/*" ); constraint.addCollection(collection); constraint.setAuthConstraint( true ); context.addConstraint(constraint ); //设置使用httpOnly context.setUseHttpOnly( true ); } }); return tomcatServletContainerFactory; } } |
启用不安全的HTTP方法
问题描述:
可能会在Web服务器上上载、修改或删除Web页面、脚本和文件。
'启用了不安全的HTTP方法:OPTIONS /system HTTP/1.1Allow: HEAD, PUT, DELETE, TRACE, OPTIONS, PATCH
上述方法的用途:
- Options、Head、Trace:主要由应用程序来发现和跟踪服务器支持和网络行为;
- Get:检索文档;
- Put和Post:将文档提交到服务器;
- Delete:销毁资源或集合;
- Mkcol:创建集合
- PropFind和PropPatch:针对资源和集合检索和设置属性;
- Copy和Move:管理命名空间上下文中的集合和资源;
- Lock和Unlock:改写保护
很显然上述操作明细可以对web服务器进行上传、修改、删除等操作,对服务造成威胁。虽然WebDAV有权限控制但是网上一搜还是一大堆的攻击方法,所以如果不需要这些方法还是建议直接屏蔽就好了。
解决方案:
在web应用中的web.xml加上如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
|
< security-constraint > < web-resource-collection > < web-resource-name >disp</ web-resource-name > < url-pattern >/*</ url-pattern > < http-method >PUT</ http-method > < http-method >DELETE</ http-method > < http-method >HEAD</ http-method > < http-method >OPTIONS</ http-method > < http-method >TRACE</ http-method > < http-method >PATCH</ http-method > </ web-resource-collection > < auth-constraint ></ auth-constraint > </ security-constraint > |
标签介绍:
- <security-constraint>用于限制对资源的访问;
- <auth-constraint>用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;
- <url-pattern>指定需要验证的资源
- <http-method>指定那些方法需要验证
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://tianjunwei.blog.csdn.net/article/details/78252831