WebDAV-tomcat 安全请求问题

WebDAV-tomcat

 

  1. 需求

由于网站安全扫描中可能存在的安全性问题。需要禁用WebDAV,或者说是对http中的一些方法的禁用。

     2.问题复显

在未限制DELETE等方法前(即未做上述web.xml的内容的添加之前),测试httpDELETE方法的效果,方式如下:

第一步:

Tomcatweb.xml 文件中配置org.apache.catalina.servlets.DefaultServlet的初始化参数

 

    readonly 

    false 

 

 

readonly参数默认是true,即不允许deleteput操作,所以默认的通过XMLHttpRequest对象的put或者delete方法访问就会报告 http 403 forbidden 错误。

 

第二步:

 

从客户端通过 Ajax XMLHTTPRequest 发起 DELETE/PUT 请求,利用AJAX的方式调用DELETE,

Jsp页面添加:

document.write(req.responseText);这一句既是调用了Ajax,也是将删除的1.png返回回来,删除成功 (已看到效果)。Tomcat文件中1.png已经被删除

WebDAV-tomcat 安全请求问题_第1张图片


 

3.问题解决

 

tomcat下的应用程序中web.xml中添加如下的代码

 

      
         
       /*     
       PUT     
    DELETE     
    HEAD     
    OPTIONS     
    TRACE
   
     
            
      
     
         
         
        BASIC     
   

修改应用中的web.xml就只针对本应用起作用,修改tomcat中的web.xml就可以对启动在该tomcat下所有的应用起作用。
应用后的效果,请求 Access to the requested resource has been denied,会被拒绝

WebDAV-tomcat 安全请求问题_第2张图片

 

 4.安全拓展

Spring Security 4.0之后,引入了CSRF,默认是开启。CSRF默认支持的方法: GET|HEAD|TRACE|OPTIONS,不支持POST

客户端访问服务端会首先发起get请求,这个get请求在到达服务端的时候,服务端的Spring security会有一个过滤 CsrfFilter去检查这个请求,如果这个request请求的http header里面的X-CSRF-COOKIEtoken值为空的时候,服务端就好自动生成一个 token值放进这个X-CSRF-COOKIE值里面,客户端在get请求的header里面获取到这个值,如果客户端有表单提交的post请求,则要求客户端要 携带这个token值给服务端,在post请求的header里面设置_csrf属性的token值,提交的方式可以是ajax也可以是放在form里面设置hidden 属性的标签里面提交给服务端,服务端就会根据post请求里面携带的token值进行校验,如果跟服务端发送给合法客户端的token值是一样的,那么 这个post请求就可以受理和处理,如果不一样或者为空,就会被拦截。由于恶意第三方可以劫持session id,而很难获取token值,所以起到了 安全的防护作用。

 

 

你可能感兴趣的:(WebDAV-tomcat 安全请求问题)