关于jdbc:JDBCSQL注入案例模拟用户登录

2次阅读

共计 1027 个字符,预计需要花费 3 分钟才能阅读完成。

需要

承接上文 JDBC-SQL 注入简介. 在大略理解了什么是 SQL 注入之后, 接下来应用 test_02 数据库表模仿用户登录操作.

提醒用户输出用户名和明码, 应用 Statement 字符串拼接的形式实现用户登录

步骤

JDBC- 编写工具类

  • 调用 JDBCUtils 工具类获取连贯
  • 调用 JDBCUtils 工具类获取语句执行平台(即 Statement 对象)
  • 提醒用户输出用户名和明码
  • 执行字符串接接后的 sql 语句
  • 判断是否登录胜利
  • 调用 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 注入)

如上, 咱们应用一种比拟 ” 奇妙 ” 的形式就骗过了登录验证
呈现这种问题的起因是 应用了字符串拼接. 所以实践上如果咱们不应用字符串拼接, 应该就能够避免 SQL 注入. 即prepareStatement

正文完
 0