zoukankan      html  css  js  c++  java
  • sql注入

    sql注入的前提是采用的动态拼接(字符串拼接)的的方式:

    如下:"select * from user where userName=’” + userName + ”’ and password = ‘”+password”’

    --------------------


    张三  123456

    select * from user where userName='张三' and password='123456'


    ---------------------

    '张三'; --

    select * from  user where userName='张三';--'and password='123456'

    不需要密码也能登录了。

    -------------
        
    解决方案:使用preparedStatement的参数化sql,通过先确定语义,再传入参数,就不会因为传入的参数改变sql的语义。
    (通过setInt,setString,setBoolean传入参数)

     //建立数据连接
                conn=ds.getConnection();
                //1.设置prepareStatement带占位符的sql语句
                PreparedStatement ptmt = conn.prepareStatement("select * from user where userName = ? and password = ?");
                ptmt.setString(1, "张三");      //2.设置参数
                ptmt.setString(2, "123456");
                rs=ptmt.executeQuery();     

                while(rs.next()){
                    System.out.println("登陆成功");
                    return;
                }
                System.out.println("登陆失败");

    关键点:占位符、数据类型控制
        

    摘抄自:
    https://blog.csdn.net/qq_30258957/article/details/78145885  

  • 相关阅读:
    mysql8下载安装及配置
    jdk11下载安装及环境变量配置
    展示所有商品案例
    事务(转账实例)
    Part2.7 ESLint
    Part2.6 Webpack
    Part2.5 模块化开发
    Part2.4 gulp 实践
    Part2.3 Grunt
    Part2.2 plop 使用
  • 原文地址:https://www.cnblogs.com/haiqin/p/9201277.html
Copyright © 2011-2022 走看看