当我们使用的是以下方式进行SQL语句的执行时,就会面临SQL攻击的风险
1.使用createStatement进行查询的类
package com.lili.sqlinsert;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.lili.jdbctoots.JdbcToots;
public class login {
public static void login(String name,String pass) {
Connection con=JdbcToots.getCon();
Statement st=null;
ResultSet rs=null;
String sql="select * from user where "+"name='"+name+"'"+"and password='"+pass+"'";
System.out.println(sql);
try {
st=con.createStatement();
rs= st.executeQuery(sql);
if(rs.next())
{
System.out.println( name+"登录成功");
}
else {
System.out.println("登录失败!");
}
} catch (SQLException e) {
e.printStackTrace();
}
JdbcToots.closeCon(con, st, rs);
}
}
2.测试代码:
package com.lili.sqlinsert;
public class sqlInsert {
public static void main(String[] args) {
login.login("root", "root1");
login.login( "a' OR 'a'='a","a' OR 'a'='a");
}
}
3.测试结果:
第一个账号和密码是数据库中不存在的,而第二个就是我们注入的恶意sql.