欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL注入漏洞過程實例及解決方案

 更新時間:2020年03月20日 15:12:43   作者:shouyaya  
這篇文章主要介紹了SQL注入漏洞過程實例及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

代碼示例:

public class JDBCDemo3 {
  public static void demo3_1(){
    boolean flag=login("aaa' OR ' ","1651561");  //若已知用戶名,用這種方式便可不用知道密碼就可登陸成功
    if (flag){
      System.out.println("登陸成功");
    }else{
      System.out.println("登陸失敗");
    }

  }
  public static boolean login(String username,String password){
    Connection conn=null;
    Statement stat=null;
    ResultSet rs=null;
    boolean flag=false;
    try {
      conn=JDBCUtils.getConnection();
      String sql="SELECT * FROM user WHERE username='"+username+"'AND password='"+password+"'"; //此處是SQL注入漏洞的關鍵,因為是字符串的拼接,會使查詢語句變?yōu)椋篠ELECT * FROM user WHERE username='aaa' OR '' AND password='1651561',此查詢語句是可得到結果集的,便出現此漏洞
      stat=conn.createStatement();
      rs=stat.executeQuery(sql);
      if(rs.next()){
        flag=true;
      }else{
        flag=false;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return flag;
  }

解決方法,使用PrepareStatment:

public static void demo3_1(){
    boolean flag=login1("aaa' OR ' ","1651561");
    if (flag){
      System.out.println("登陸成功");
    }else{
      System.out.println("登陸失敗");
    }

  }
  public static boolean login1(String username,String password){
    Connection conn=null;
    PreparedStatement pstat=null;
    ResultSet rs=null;
    boolean flag=false;

    try {
      conn=JDBCUtils.getConnection();
      String sql="SELECT * FROM user WHERE username=? AND password=?"; //使用?代替參數,預先設置好sql格式,就算在輸入sql關鍵字也不會被sql識別
      pstat=conn.prepareStatement(sql);
      pstat.setString(1,username); //設置問號的值
      pstat.setString(2,password);
      rs=pstat.executeQuery();
      if(rs.next()){
        flag=true;
      }else{
        flag=false;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return flag;
  }
}

使用以上解決辦法就無法通過SQL注入漏洞登陸用戶成功。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Mysql服務添加 iptables防火墻策略的方案

    Mysql服務添加 iptables防火墻策略的方案

    這篇文章主要介紹了給Mysql服務添加 iptables防火墻策略的方案,本文給大家分享兩種解決方案,需要的朋友可以參考下
    2021-04-04
  • 如何配置全世界最小的 MySQL 服務器

    如何配置全世界最小的 MySQL 服務器

    Intel Edison 是一個小巧的計算機基于 22 nm 的 Silvermont 雙核 Intel Atom CPU 主頻 500MHz運行 Linux (叫做 Yocto 的基于 Ubuntu 的發(fā)布版)。為了對 Edison 進行編程,我們需要一塊接口板??梢赃x擇的板子包括兼容Arduino的接口板 (包含了 SD 卡) 還有 Intel 接口板。
    2016-04-04
  • MySQL存儲過程的查詢命令介紹

    MySQL存儲過程的查詢命令介紹

    這篇文章主要介紹了MySQL存儲過程的查詢命令介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 你還在 Select * 嗎?

    你還在 Select * 嗎?

    這篇文章主要介紹了MySql Select ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • MySQL優(yōu)化之如何查找SQL效率低的原因

    MySQL優(yōu)化之如何查找SQL效率低的原因

    這篇文章主要介紹了MySQL優(yōu)化之如何查找SQL效率低的原因 ,需要的朋友可以參考下
    2014-05-05
  • mysql的計劃任務與事件調度實例分析

    mysql的計劃任務與事件調度實例分析

    這篇文章主要介紹了mysql的計劃任務與事件調度,結合實例形式分析了mysql計劃任務與事件調度相關概念、原理、用法與操作注意事項,需要的朋友可以參考下
    2019-12-12
  • MySQL實現字符串截取的圖文教程

    MySQL實現字符串截取的圖文教程

    在實際的項目開發(fā)中有時會有對數據庫某字段截取部分的需求,這種場景有時直接通過數據庫操作來實現比通過代碼實現要更方便快捷些,這篇文章主要給大家介紹了關于MySQL實現字符串截取的相關資料,需要的朋友可以參考下
    2022-03-03
  • Mysql中explain命令返回參數的具體使用

    Mysql中explain命令返回參數的具體使用

    EXPLAIN返回的關鍵列包括id、select_type、table、type、possible_keys、key、key_len、ref、rows和Extra等,本文就來介紹Mysql中explain命令返回參數,感興趣的可以了解一下
    2024-09-09
  • MySQL清理數據并釋放磁盤空間的實現示例

    MySQL清理數據并釋放磁盤空間的實現示例

    本文主要介紹了MySQL如何清理數據并釋放磁盤空間,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • MySQL自動填充create_time和update_time的兩種方式

    MySQL自動填充create_time和update_time的兩種方式

    當我們創(chuàng)建業(yè)務表的時候 通常都需要設置create_time 和 update_time,下面這篇文章主要給大家介紹了關于MySQL自動填充createTime和updateTime的兩種方式,需要的朋友可以參考下
    2022-05-05

最新評論