• SQL注入命令优化


    SQL注入命令优化

    优化命令:将Statement 替换成了 PreparedStatment预编译命令对象
    

    image

    image

    未使用预编译对象,会导致sql注入问题. 密码输入啥都可以登录成功

    @Test
        //登录
        public void login() throws SQLException {
            Connection connection = JdbcUtils.getConnection();
            Statement statement = connection.createStatement();
            String name = "'or 1=1 #";
            String password = "asdasdsad";
            ResultSet resultSet = statement.executeQuery("select * from user where name = '"+name+"' and password = '"+password+"'");
            if(resultSet.next()){
                System.out.println("登录成功!!");
            }else{
                System.out.println("登录失败!!!");
            }
        }
    

    使用预编译对象后,解决用户名、密码随便输入都可以的问题

     @Test
        //登录
        public void login() throws SQLException {
            Connection connection = JdbcUtils.getConnection();
            //Statement statement = connection.createStatement();   不再使用Statment 存在sql注入的bug
            PreparedStatement preparedStatement = connection.prepareStatement("select * from user where name = ? and password = ?"); //预编译
            String name = "lisi";
            String password = "123";
            //此时preparedStatement中 占位符还没有存值,因此需要通过方法传入用户输入的值
            preparedStatement.setObject(1,name);
            preparedStatement.setObject(2,password);
            ResultSet resultSet = preparedStatement.executeQuery();
            if(resultSet.next()){
                System.out.println("登录成功!!");
            }else{
                System.out.println("登录失败!!!");
            }
            resultSet.close();
            preparedStatement.close();
            JdbcUtils.close();
        }
    
  • 相关阅读:
    little_by_little_2 为一个数据集创建一个dataset类。(基于pytorch)
    knn_in_python
    test
    numpy一些基础知识
    PIL模块
    环境小硕的转化之路-28-面向对象编程方法的适应性训练
    环境小硕的转行之路-27-面向对象的成员
    环境小硕的转行之路-26-初识面向对象
    3DES小工具
    环球好货,小黑鱼就是一个骗局
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/15232262.html
Copyright © 2020-2023  润新知