web项目:漏洞修复(1)

1.  启用了不安全的 HTTP 方法

任务:

禁用 WebDAV,或者禁止不需要的 HTTP 方法。

 

解决方案:

如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序应用程序呢?

解决方法

第一步:修改应用程序的web.xml文件的协议

<?xml version="1.0" encoding="UTF-8"?>  

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  

    version="2.4"> 



第二步:在应用程序的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> 

 

第三步:修改tomcat中conf下的web.xml,步骤同上。

 

2.  解决掉“Slow HTTP Denial of Service Attack“漏洞

任务:

Slow HTTP Denial of Service Attack漏洞是利用HTTPPOST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,让这个连接不断开。这样当客户端连接多了后,占用了服务器的所有可用连接,从而导致DOS,属于一种拒绝服务攻击。

解决方案:

打开tomcat的server.xml找到

<Connector port="8080"protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8"/>

将其中的connectionTimeout="20000"改为connectionTimeout="8000",其单位是毫秒。

3.  Cookie without Secure flag set

任务:

javascript等脚本语言能够通过http操纵cookie,对服务器发起XSS攻击。

解决方案:

在应用程序的web.xml文件里,进行以下设置:

<!-- 设置session相关属性 -->

                  <session-config>

                            <session-timeout>过期时长(单位为分钟)</session-timeout>

                            <cookie-config>

                                     <http-only>true</http-only>

                            </cookie-config>

         </session-config>

 

4.  危险字符过滤

任务:

在操作时可以输入危险字符。如”<,>,’,%2E”,以达到修改或者查看数据库内容。

解决方案:

加入过滤器,拦截器等,将危险字符替换。

步骤:1,在web.xml中配置拦截器(过滤器)

           2,在,框架的配置文件(如struts.xml)中配置过滤器。

           3,书写拦截器(过滤器),使用替换或者正则等方式,过滤掉危险字符。

 

5.  恶意修改访问地址

任务:

防止被恶意修改访问地址。

解决方案:

在拦截器(过滤器)中,加入

       //HTTP 头设置 Referer过滤 

                   Stringreferer = request.getHeader("Referer");   //REFRESH 

                   if(referer!=null&& referer.indexOf(GlobalConstant.SYS_ROOT)<0){          

                            request.getRequestDispatcher(request.getRequestURI()).forward(request,response); 

                   }

6.  加入统一异常处理页面

任务:

介入统一异常处理页面,防止报错信息中包含有价值的信息被泄漏。

解决方案:

在web.xml中加入异常处理的页面配置。

<!-- 默认的错误处理页面--> 

   <error-page> 

        <error-code>403</error-code> 

       <location>/jsp/error.jsp</location> 

   </error-page> 

   <error-page> 

       <error-code>404</error-code> 

       <location>/jsp/error.jsp</location> 

   </error-page> 

   <!-- 仅仅在调试的时候注视掉,在正式部署的时候不能注释 -->  

   <!-- 这样配置也是可以的,表示发生500错误的时候,转到500.jsp页面处理。 --> 

   <error-page>  

       <error-code>500</error-code>  

       <location>/jsp/error.jsp</location>  

   </error-page>  

     

   <!-- 这样的配置表示如果jsp页面或者servlet发生java.lang.Exception类型(当然包含子类)的异常就会转到500.jsp页面处理。 --> 

   <error-page>  

       <exception-type>java.lang.Exception</exception-type>  

       <location>/jsp/error.jsp</location>  

   </error-page>

 

7.  会话标识

任务:

不要接受外部创建的会话标识。

解决方案:

在控制层加入:

         if(request.getSession() != null){

                            System.out.println("清空session s");

                            request.getSession().invalidate();//清空session

                   }

                   Cookie cookie =request.getCookies()[0];//获取cookie

                   cookie.setMaxAge(0);//cookie过期

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值