zoukankan      html  css  js  c++  java
  • Struts2拦截SQL注入

    <interceptors>
                <!--设置超时拦截器 -->
                <interceptor name="sessionOut" class="com.util.SessionOutCheckInterceptor"></interceptor>
                <!-- 设置拦截去栈 -->
                <interceptor-stack name="session">
                    <interceptor-ref name="sessionOut"></interceptor-ref>
                    <!-- 引用struts2的默认拦截器栈 -->
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
    </interceptors>
    public class SessionOutCheckInterceptor implements Interceptor {
        public String intercept(ActionInvocation arg0) throws Exception {
            UserSession userSession = AuthorityUtil.getSysUserSession();
            if(userSession != null){
                ActionContext actionContext=arg0.getInvocationContext();
                HttpServletRequest request= (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
                request.setCharacterEncoding("utf-8");
                
                Map<String, Object> Parameters= actionContext.getParameters();
                String CHECKSQL = "[`~!@#$%^&*()+=|{}':;',\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
                Pattern p = Pattern.compile(CHECKSQL);
                boolean CHECKSQLCODE=false;
                for (Entry<String, Object> entity : Parameters.entrySet()) {
                    String []value=(String[])entity.getValue();
                    if(value!=null&&value.length>0&&StringUtils.isNotBlank(value[0])) {
                        String decodeValue=URLDecoder.decode(URLDecoder.decode(value[0],"utf-8"),"utf-8");
                        Matcher m = p.matcher(decodeValue);
                        if(m.find()) {
                            CHECKSQLCODE=true;
                            break;
                        }
                    }
                }
                if(!CHECKSQLCODE) {
                    return arg0.invoke();
                }else {
                    return null; 
                }
            }else{
                return "login";
            }
        }
    
        public void destroy() {
            
        }
    
        public void init() {
        }
    
    }

    public class SessionOutCheckInterceptor implements Interceptor {
    private static final long serialVersionUID = 1L;
    public String intercept(ActionInvocation arg0) throws Exception {UserSession userSession = AuthorityUtil.getSysUserSession();if(userSession != null){ActionContext actionContext=arg0.getInvocationContext();HttpServletRequest request= (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);        request.setCharacterEncoding("utf-8");        Map<String, Object> Parameters= actionContext.getParameters();String CHECKSQL = "[`~!@#$%^&*()+=|{}':;',\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";Pattern p = Pattern.compile(CHECKSQL);boolean CHECKSQLCODE=false;for (Entry<String, Object> entity : Parameters.entrySet()) {String []value=(String[])entity.getValue();if(value!=null&&value.length>0&&StringUtils.isNotBlank(value[0])) {String decodeValue=URLDecoder.decode(URLDecoder.decode(value[0],"utf-8"),"utf-8");    Matcher m = p.matcher(decodeValue);if(m.find()) {CHECKSQLCODE=true;break;}}}if(!CHECKSQLCODE) {return arg0.invoke();}else {return null; }}else{return "login";}}
    public void destroy() {}
    public void init() {}
    }

  • 相关阅读:
    二叉树相关题目
    二叉树的遍历
    mysql获取某个表中除了某个字段名外的所有字段名
    设计模式之原型模式
    设计模式之工厂方法模式
    设计模式之代理模式
    设计模式之装饰模式
    设计模式之策略模式
    设计模式之简单工厂模式
    Redis的使用及参考代码
  • 原文地址:https://www.cnblogs.com/zhanchaohan/p/10278404.html
Copyright © 2011-2022 走看看