主頁 > 知識庫 > SQL注入漏洞過程實例及解決方案

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

熱門標(biāo)簽:400電話到哪辦理優(yōu)惠 電話機器人是電腦呼號嗎 怎么更改高德地圖標(biāo)注 鄭州網(wǎng)絡(luò)外呼系統(tǒng)價錢 博樂電銷機器人 上海市三維地圖標(biāo)注 機器人打電銷電話 南寧外呼系統(tǒng)招商 云南大數(shù)據(jù)外呼系統(tǒng)

代碼示例:

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注入漏洞的關(guān)鍵,因為是字符串的拼接,會使查詢語句變?yōu)椋篠ELECT * FROM user WHERE username='aaa' OR '' AND password='1651561',此查詢語句是可得到結(jié)果集的,便出現(xiàn)此漏洞
      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=?"; //使用?代替參數(shù),預(yù)先設(shè)置好sql格式,就算在輸入sql關(guān)鍵字也不會被sql識別
      pstat=conn.prepareStatement(sql);
      pstat.setString(1,username); //設(shè)置問號的值
      pstat.setString(2,password);
      rs=pstat.executeQuery();
      if(rs.next()){
        flag=true;
      }else{
        flag=false;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return flag;
  }
}

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php中防止SQL注入的最佳解決方法
  • PHP開發(fā)中常見的安全問題詳解和解決方法(如Sql注入、CSRF、Xss、CC等)
  • T-SQL篇如何防止SQL注入的解決方法
  • ASP+MSSQL2000 數(shù)據(jù)庫被批量注入后的解決方法
  • MySQL Proxy(解決注入的另一思路)
  • MySQL解決SQL注入的另類方法詳解
  • SQL注入原理與解決方法代碼示例
  • 通過ibatis解決sql注入問題
  • sqlserver 數(shù)據(jù)庫被注入解決方案
  • 實例介紹SQL注入以及如何解決

標(biāo)簽:秦皇島 益陽 澳門 寧夏 恩施 定西 白銀 杭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL注入漏洞過程實例及解決方案》,本文關(guān)鍵詞  SQL,注入,漏洞,過程,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL注入漏洞過程實例及解決方案》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL注入漏洞過程實例及解決方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章