• 防止SQL注入


    参考:http://hi.baidu.com/wangyue06/item/c00c824b35cf740ae835049c

    1.传统JDBC,采用PreparedStatement 。预编译语句集,内置了处理SQL注入的能力

      String sql= "select * from users where username=? and password=?";    //如果把改为:username1,按参数名绑定
            PreparedStatement preState = conn.prepareStatement(sql);
            preState.setString(1, userName);                         //则此处变为.setString("username1",username)
            preState.setString(2, password);
            ResultSet rs = preState.executeQuery();

    2. 采用正则表达式,将输入的所有特殊符号转换为空格或其他字符

    public static String TransactSQLInjection(String str)
            {
                  return str.replaceAll(".*([';]+|(--)+).*", " ");
               // 我认为 应该是return str.replaceAll("([';])+|(--)+","");-->这是原作者的注释,个人不是很赞同。
            }
            userName=TransactSQLInjection(userName);
            password=TransactSQLInjection(password);
            String sql="select * from users where username='"+userName+"' and password='"+password+"' ";
            Statement sta = conn.createStatement();
            ResultSet rs = sta.executeQuery(sql);

    参考:http://blog.csdn.net/fufengrui/article/details/7740288

    3. JAVA Web中,编写Fileter,实现对renquest请求中参数的不合法字符替换

    for(String word : invalidsql){  
                    if(word.equalsIgnoreCase(value) || value.contains(word)){  
                        if(value.contains("<")){  
                            value = value.replace("<", "<");     //这个个人认为括号中第二个<应该替换成其他符号 
                        }  
                        if(value.contains(">")){  
                            value = value.replace(">", ">");  
                        }  
                        request.getSession().setAttribute("sqlInjectError", "the request parameter \""+value+"\" contains keyword: \""+word+"\"");  
                        response.sendRedirect(request.getContextPath()+error);  
                        return;  
                    }  
                }  

    4.hibernate 参考:http://www.cnblogs.com/yhason/archive/2012/06/07/2540840.html

  • 相关阅读:
    Mac下tomcat的安装与配置
    jquery中的属性和css
    jquery中的选择器
    数组对象元素的添加,String对象,BOM对象以及文档对象的获取
    js中的函数,Date对象,Math对象和数组对象
    js中的循环语句
    js中的运算符和条件语句
    js中的数据类型及其转换
    js的意义,引用方法及变量
    移动端网页项目总结
  • 原文地址:https://www.cnblogs.com/nkxyf/p/2987031.html
Copyright © 2020-2023  润新知