zoukankan      html  css  js  c++  java
  • 每日日报

    16sql注入与预防

    如果使用Statement进行查询
     sql是接收输入框输入 进行拼装的输入框中 如果输入了sql语句 比如 " "zhangsan1asdfadsf 'or' 1==1","1==1 'or' 12aasdfadsf3""
    实际上 这不是一个普通的字符串 而是一个sql语句 这个sql语句 会改变 拼装后的sql的判断条件的逻辑 从而返回错误的结果
    这种现象就叫SQL注入
     
    预防sql注入的解决方案
    不要使用statement执行直接拼装的sql
    要使用PreparedStatement 这个类会把跟sql相关的字符串 在组拼sql的时候做转义从而预防sql注入
    public class JDBCLogin {
    
    public static void main(String[] args) {
    
    // boolean login = login("zhangsan","123");
    
    boolean login = login("admin 'or' 1==1","1==1 'or' 12aasdfadsf3");
    
    if(login){
    
      System.out.println("登录成功");
    
    }else{
    
      System.out.println("登录失败");
    
    }
    
    }
    
    public static boolean login(String username,String password){
    
      Connection conn = JDBC_Utils.getConn();
    
    try {
    
    //Statement statement = conn.createStatement();
    
      String sql1 = "select * from user where username = ? and password = ?";
    
      PreparedStatement prepareStatement = conn.prepareStatement(sql1);
    
      prepareStatement.setString(1, username);
    
      prepareStatement.setString(2, password);
    
    // String sql = "select * from user where username = '"+username+"' and password = '"+password+"'";
    
    // ResultSet resultSet = statement.executeQuery(sql);
    
      ResultSet resultSet = prepareStatement.executeQuery();
    
    if(resultSet.next()){
    
      return true;
    
    }else{
    
      return false;
    
    }
    
    } catch (Exception e) {
    
      e.printStackTrace();
    
      return false;
    
    }
    
    }
    
    }
    select * from user where username = 'zhangsan1asdfadsf 'or' 1==1' and password = '1==1 'or' 12aasdfadsf3'
  • 相关阅读:
    chapter23:软件安装RPM,SRPM与YUM之(0)-软件管理器的简介
    chapter22:源码与Tarball之(3)-函数库的管理
    chapter22:源码与Tarball之(2)-Tarball的管理与安装
    Akamai在内容分发网络中的算法研究(翻译总结)
    常用机器性能评估工具
    利用神经网络编辑图片的调研
    Redis命令总结及其基础知识讲述
    MySQL主从复制与主主复制
    MySQL查询优化
    降低Redis内存占用
  • 原文地址:https://www.cnblogs.com/zhukaile/p/14835971.html
Copyright © 2011-2022 走看看