解决sql注入问题
2020-04-02 07:53
931 查看
登录的小练习,解决sql注入问题
- 注:借助了之前写的JDBCUtils的工具类和配置文件。
- 先来一段错误的释放
package cn.itcast.jdbc; import cn.itcast.util.JDBCUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class JDBCDemo9 { /** * * 需求: * 1. 通过键盘录入用户名和密码 * 2. 判断用户是否登录成功 * * slect * from user where username = "" and password = ""; */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String username = sc.nextLine(); System.out.println("请输入密码:"); String password = sc.nextLine(); boolean flag = new JDBCDemo9().login(username, password); if (flag == true){ System.out.println("登录成功"); } else{ System.out.println("登录失败"); } } public boolean login(String username, String password){ Connection conn = null; Statement stmt = null; ResultSet rs = null; if(username == null || password == null){ return false; } //判断数据库连接是否成功 try { //1.获取数据库连接 conn = JDBCUtils.getConnection(); //2.定义sql String sql = "select * from user where username = '"+username+"' and password = '"+password+"'"; //3.获取执行sql的对象 stmt = conn.createStatement(); //4.执行查询 rs = stmt.executeQuery(sql); //5.判断 return rs.next(); } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(rs, stmt, conn); } return false; } }
解决sql注入问题
- 我前一篇博客写的jdbc工具类里面改下close()方法的代码,加入PreparesStatement的代码。
package cn.itcast.jdbc; import cn.itcast.util.JDBCUtils; import java.sql.*; import java.util.Scanner; public class JDBCDemo9 { /** * * 需求: * 1. 通过键盘录入用户名和密码 * 2. 判断用户是否登录成功 * * slect * from user where username = "" and password = ""; */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String username = sc.nextLine(); System.out.println("请输入密码:"); String password = sc.nextLine(); boolean flag = new JDBCDemo9().login(username, password); if (flag == true){ System.out.println("登录成功"); } else{ System.out.println("登录失败"); } } public boolean login(String username, String password){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; Statement stmt = null; if(username == null || password == null){ return false; } //判断数据库连接是否成功 try { //1.获取数据库连接 conn = JDBCUtils.getConnection(); //2.定义sql String sql = "select * from user where username = ? and password = ?"; //3.获取执行sql的对象 pstmt = conn.prepareStatement(sql); pstmt.setString(1,username); pstmt.setString(2,password); //4.执行查询,切记不用传递参数 rs = pstmt.executeQuery(); //5.判断 return rs.next(); } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(rs, pstmt, stmt, conn); } return false; } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- PreparedStatement解决sql注入问题
- 数据库之解决SQL注入问题
- JDBC解决sql注入问题
- ibatis解决sql注入问题
- 解决ASP防SQL注入攻击程序问题
- JDBC学习笔记(6):PreparedStatement解决SQL注入问题
- 关于网站SQL注入的问题,以及解决办法
- JDCB学习笔记 -- day05 实现一个用户的登录功能及解决SQL注入问题
- ibatis解决sql注入问题
- 触发器解决SQL注入问题
- JAVA-JDBC解决SQL注入问题
- ibatis解决sql注入问题
- 解决sql注入问题(丛林战争项目)
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- PreparedStatement解决sql注入问题
- 关于网站SQL注入的问题,以及解决办法
- spring解决sql注入问题:自定义拦截器
- ibatis解决sql注入问题
- ibatis解决sql注入问题