zoukankan      html  css  js  c++  java
  • SQL注入问题

     PreparedStatement:执行sql的对象
                1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题
                    1. 输入用户随便,输入密码:a' or 'a' = 'a
                    2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a' 
          这是一个恒等式,只要or一边成立就是true
                2. 解决sql注入问题:使用PreparedStatement对象来解决
                3. 预编译的SQL:参数使用?作为占位符
                4. 步骤:
                    1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
                    2. 注册驱动
                    3. 获取数据库连接对象 Connection
                    4. 定义sql
                        * 注意:sql的参数使用?作为占位符。 如:select * from user where username = ? and password = ?;
                    5. 获取执行sql语句的对象 PreparedStatement  Connection.prepareStatement(String sql) 
                    6. 给?赋值:
                        * 方法: setXxx(参数1,参数2)
                            * 参数1:?的位置编号 从1 开始
                            * 参数2:?的值
                    7. 执行sql,接受返回结果,不需要传递sql语句
                    8. 处理结果
                    9. 释放资源

                5. 注意:后期都会使用PreparedStatement来完成增删改查的所有操作
                    1. 可以防止SQL注入
                    2. 效率更高

  • 相关阅读:
    flutter 使用keyboard_actions 关闭ios键盘
    Android Studio androidx 包冲突解决方法
    flutter 卡在Running Gradle task 'assembleDebug'...
    SpringBoot Controller接收参数的几种常用方式
    RN 0.6以后react-navigation 导航报错null is not an object (evaluating '_RNGestureHandlerModule.default.Direction')
    flutter 调用摄像头和照片
    RN 真机roload
    iOS Undefined symbols for architecture armv7:
    android 签名生成和签名验证
    Keil MDK中Image~~RW_IRAM1~~ZI~~Limit(~表示$)
  • 原文地址:https://www.cnblogs.com/2237501874-com/p/12678762.html
Copyright © 2011-2022 走看看