佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > SQL注入漏洞過(guò)程實(shí)例及解決方案

SQL注入漏洞過(guò)程實(shí)例及解決方案

熱門(mén)標(biāo)簽:網(wǎng)站排名優(yōu)化 地方門(mén)戶(hù)網(wǎng)站 鐵路電話系統(tǒng) Linux服務(wù)器 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求 服務(wù)外包 AI電銷(xiāo)

代碼示例:

public class JDBCDemo3 {
  public static void demo3_1(){
    boolean flag=login("aaa' OR ' ","1651561");  //若已知用戶(hù)名,用這種方式便可不用知道密碼就可登陸成功
    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àn)槭亲址钠唇樱瑫?huì)使查詢(xún)語(yǔ)句變?yōu)椋篠ELECT * FROM user WHERE username='aaa' OR '' AND password='1651561',此查詢(xún)語(yǔ)句是可得到結(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)鍵字也不會(huì)被sql識(shí)別
      pstat=conn.prepareStatement(sql);
      pstat.setString(1,username); //設(shè)置問(wèn)號(hào)的值
      pstat.setString(2,password);
      rs=pstat.executeQuery();
      if(rs.next()){
        flag=true;
      }else{
        flag=false;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return flag;
  }
}

使用以上解決辦法就無(wú)法通過(guò)SQL注入漏洞登陸用戶(hù)成功。

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

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

標(biāo)簽:衡水 蘭州 銅川 湖南 湘潭 崇左 仙桃 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL注入漏洞過(guò)程實(shí)例及解決方案》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    通榆县| 耿马| 马尔康县| 三门县| 伊金霍洛旗| 六枝特区| 靖西县| 石棉县| 于田县| 宁强县| 子长县| 汶川县| 麻阳| 禄丰县| 旺苍县| 泰宁县| 监利县| 读书| 朝阳市| 嵩明县| 永福县| 鞍山市| 兴文县| 如东县| 淳安县| 荆门市| 崇礼县| 云南省| 库尔勒市| 景泰县| 沐川县| 富顺县| 浦北县| 连州市| 陆河县| 勐海县| 郸城县| 肥乡县| 大姚县| 灵寿县| 万安县|