承接上文JDBC-SQL注入简介. 在大概了解了什么是SQL注入以后,接下来使用test_02
数据库表模拟用户登陆操做.sql
提示用户输入用户名和密码,使用Statement字符串拼接的方式实现用户登陆数据库
JDBC-编写工具类
JDBCUtils
工具类获取链接JDBCUtils
工具类获取语句执行平台(即Statement对象)JDBCUtils
工具类关闭对象public class LoginTest01 { public static void main(String[] args) throws SQLException { // 1.获取链接 Connection conn = JDBCUtils.getConnection(); // 2.获取执行平台,即Statement对象 Statement sqlExecute = JDBCUtils.createStatement(conn); // 3.提示用户输入用户名和密码 Scanner sc = new Scanner(System.in); System.out.println("请输入用户名: "); String user = sc.nextLine(); System.out.println("请输入密码: "); String pass = sc.nextLine(); // 4.执行字符串拼接后的sql语句 String sql = "select * from test_02 where name = '" + user + "' and password = '" + pass + "';"; System.out.println(sql);//查看执行的sql语句 ResultSet resultSet = sqlExecute.executeQuery(sql); // 5.判断是否登陆成功 if(resultSet.next()){ System.out.println("登陆成功,欢迎:" + user); }else{ System.out.println("登陆失败!"); } // 5.关闭对象 JDBCUtils.close(conn,sqlExecute,resultSet); } }
如上, 咱们使用一种比较"巧妙"的方式就骗过了登陆验证
出现这种问题的缘由是使用了字符串拼接. 因此理论上若是咱们不使用字符串拼接,应该就能够防止SQL注入. 即prepareStatement
segmentfault