Springboot 使用內置tomcat禁止不安全HTTP的方法
Springboot 內置tomcat禁止不安全HTTP方法
1、在tomcat的web.xml中可以配置如下內容
讓tomcat禁止不安全的HTTP方法
<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容器中
@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加上如下內容
<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>指定那些方法需要驗證
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springboot2如何禁用自帶tomcat的session功能
- Tomcat使用https配置實戰教程
- SpringBoot添加SSL證書的方法
- Tomcat10配置端口號為443(使用https訪問)
- 關於Keytool配置 Tomcat的HTTPS雙向認證的問題