WebDAV-tomcat 安全请求问题

WebDAV-tomcat

 

  1. 需求

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

     2.问题复显

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

第一步:

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

<init-param> 

    <param-name>readonly</param-name> 

    <param-value>false</param-value> 

</init-param> 

 

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

 

第二步:

 

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

Jsp页面添加:

<meta name="_csrf" content="${_csrf.token}"/>

<meta name="_csrf_header" content="${_csrf.headerName}"/>

<script type="text/javascript">

      var token = $("meta[name='_csrf']").attr("content");

     var header = $("meta[name='_csrf_header']").attr("content");

        function getXMLHTTPRequest(){

            if (XMLHttpRequest)    {

                return new XMLHttpRequest();

            } else {

                try{

                    return new ActiveXObject('Msxml2.XMLHTTP');

                }catch(e){

                    return new ActiveXObject('Microsoft.XMLHTTP');

                }

            }

        }

        var req = getXMLHTTPRequest();//DELETE

               

        req.open('DELETE','http://localhost:8080/images/play/1.png',false);

              req.setRequestHeader(header, token);

        req.send(null);

        //req.send({ form: 'data' });

        document.write(req.responseText);

 

     </script>

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


 

3.问题解决

 

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

 

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

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

 

 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值,所以起到了 安全的防护作用。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值