SQL注入
Posted 蕤霁云若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中--表示注释,这样就可以使账号满足的条件下,使密码失效。
以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章