zoukankan      html  css  js  c++  java
  • SQL注入

    public class Login {
        public boolean login(String card,String password){
            
            boolean rtn= false;
            
            try {
    
                //1、加载驱动:加载数据库提供的驱动类
                Class.forName("oracle.jdbc.driver.OracleDriver");
                
                //2、获取数据库连接,通过java的驱动管理器
                Connection conn = DriverManager.getConnection(
                        "jdbc:oracle:thin:@localhost:1521:orcl ",
                        "test01", "131281huazioo");
                
                //3、获得操作数据库的声明
                Statement st=conn.createStatement();
                //sql语句
                String sql= "select * from bankcard where card='"+card+"'and password='"+password+"'";
                //执行sql语句
                ResultSet rs=st.executeQuery(sql);
                
                rtn=rs.next();
                rs.close();
                st.close();
                conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            return rtn;
        }
    }
    以上代码会出现SQL注入
    
    如:
    public class Testlogin {
    
    @Test
    public void test() {
    Login a=new Login();
    if(a.login("123123123' or 1='1", "12312312313' or 1='1")){                    //无论输入什么数据只要加or 1=1就可以成功
        System.out.println("成功!");
    }
    
    }
    
    }
    
    
    or 1=1 加到where条件后保证了条件永远为真,相当于没加条件。
    
    原SQL语句改为:select * from bankcard where card='123132' or 1=1; public void test() {
            Login a=new Login();
            if(a.login("108'--", "12312312313")){
                 System.out.println("成功!");
             }
         }
    
    加入--将后面的条件注释掉,在Oracle中--表示注释,这样就可以使账号满足的条件下,使密码失效。
    

      

  • 相关阅读:
    第六次学习笔记
    第四篇笔记
    第三篇学习笔记
    第二篇学习笔记
    第一篇学习笔记
    px与dp、sp之间的转换
    SQLite的使用(二):数据增删改查
    Logcat的级别以及Logcat的调试使用
    Android 创建服务(一)
    简说SQLite
  • 原文地址:https://www.cnblogs.com/smile-dream/p/5986678.html
Copyright © 2011-2022 走看看