• 热门专题

spring3.0 MVC安全之利用拦截器防止SQL注入

作者:riaos.com  发布日期:2012-11-23 15:53:01
Tag标签:spring3.0  MVC安全  拦截器  SQL注入  
  • 一、定义拦截器类实现HandlerInterceptor接口


    public class SqlInjectIntercepter implements HandlerInterceptor {
    
     @Override
     public void afterCompletion(HttpServletRequest arg0,
       HttpServletResponse arg1, Object arg2, Exception arg3)
       throws Exception {
     }
    
     @Override
     public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
       Object arg2, ModelAndView arg3) throws Exception {
     }
    
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
       Object arg2) throws Exception {
      Enumeration<String> names = request.getParameterNames();
      while (names.hasMoreElements()) {
       String name = names.nextElement();
       String[] values = request.getParameterValues(name);
       for (int i = 0; i < values.length; i++) {
        if(Utility.hasAttackStr(values[i])){
         if(!(values[i].equals("DELETE") && name.equals("_method")) ){
          response.setContentType("text/html;charset=utf-8");
          response.getWriter().print("请不要尝试注入<br><a href=’#’ onclick=’history.go(-1)’>返回</a>");
          return false;
         }
        }
       }
      }
      return true;
     }
    }
    
    

    二、配置拦截器


    <mvc:interceptors>
      <!– mvc:interceptor>
       <mvc:mapping path="/**"/ –>
       <bean class="com.tdrc.common.controller.SqlInjectIntercepter"/>
      <!– /mvc:interceptor–>
     </mvc:interceptors>
    注意要写在<mvc:annotation-driven/>后面,否则拦截器不起作用。

延伸阅读:

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规