亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Java防止SQL注入

系統 2434 0
SQL 注入簡介:
??????? SQL注入是最常見的攻擊方式之一,它不是利用操作系統或其它系統的漏洞來實現攻擊的,而是程序員因為沒有做好判斷,被不法

用戶鉆了SQL的空子,下面我們先來看下什么是SQL注入:

??????? 比如在一個登陸界面,要求用戶輸入用戶名和密碼:

??????? 用戶名:???? ' or 1=1 --??

??????? 密???? 碼:??

??????? 點登陸,如若沒有做特殊處理,而只是一條帶條件的查詢語句如:

??????? String sql="select * from users where username='"+userName+"' and password='"+password+"' "

??????? 那么這個非法用戶就很得意的登陸進去了.(當然現在的有些語言的數據庫API已經處理了這些問題)

??????? 這是為什么呢?我們來看看這條語句,將用戶輸入的數據替換后得到這樣一條語句:

??????? select * from users where username='' or 1=1 --' and password=''

??????? 為了更明白些,可以將其復制到SQL分析器中,將會發現,這條語句會將數據庫的數據全部讀出來,為什么呢?




??????? 很簡單,看到條件后面 username='' or 1=1 用戶名等于 '' 或 1=1 那么這個條件一定會成功,然后后面加兩個-,這意味著

什么?沒錯,注釋,它將后面的語句注釋,讓他們不起作用,這樣就可以順利的把數據庫中的數據讀取出來了。

??????? 這還是比較溫柔的,如果是執行
??????? select * from users where username='' ;DROP Database??? (DB Name) --' and password=''

??????? .......其他的您可以自己想象。。。

那么我們怎么來處理這種情況呢?下面我以java為列給大家兩種簡單的方法:

??????? 第一種采用預編譯語句集,它內置了處理SQL注入的能力,只要使用它的setString方法傳值即可:

    
String sql= "select * from users where username=? and password=?;
        PreparedStatement preState = conn.prepareStatement(sql);
        preState.setString(1, userName);
        preState.setString(2, password);
        ResultSet rs = preState.executeQuery();

  


第二種是采用正則表達式將包含有 單引號('),分號(;) 和 注釋符號(--)的語句給替換掉來防止SQL注入

    
public static String TransactSQLInjection(String str) {
             return str.replaceAll(".*([';]+|(--)+).*", " ");
          // 我認為 應該是return str.replaceAll("([';])+|(--)+","");
       }

       userName=TransactSQLInjection(userName);
       password=TransactSQLInjection(password);

       String sql="select * from users where username='"+userName+"' and password='"+password+"' "
       Statement sta = conn.createStatement();
       ResultSet rs = sta.executeQuery(sql);

  


轉載地址:http://my.oschina.net/liangtee/blog/82159

Java防止SQL注入


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩中文字幕一区二区高清 | 五月婷婷免费视频 | 国产亚洲精品色一区 | 国产国产精品人在线视 | 免费观看大片bbb | 亚洲一区二区三区欧美 | 色国产精品一区在线观看 | 国产成人精品曰本亚洲 | 成人在线一区二区三区 | 韩国女主播一区二区三区视频 | 99re视频精品全部免费 | 青青在线精品视频 | 奇米888四色在线精品 | 看看的在线视频国产 | 日本精品在线观看视频 | 日日操日日摸 | 女性毛片 | 亚洲在线小视频 | 男人的天堂一区二区视频在线观看 | 欧美日韩影视 | 五月婷婷激情四射 | se999se男人最爱 | 日韩欧美一二区 | 国产在线19禁免费观看国产 | 国产黄网永久免费 | 亚洲欧洲一区二区三区在线观看 | 天天躁日日躁狠狠躁综合 | 4虎影院在线观看 | 欧美亚洲欧美日韩中文二区 | 国产毛片一区二区三区精品 | 亚洲精品香蕉一区二区 | 四虎影视在线看免费观看 | 亚洲一区二区三区精品视频 | 鲁一鲁中文字幕久久 | 57pao一国产成视频永久免费 | 欧美日韩亚洲精品一区二区 | 亚洲国产人久久久成人精品网站 | 国产精品亚洲综合一区在线观看 | 亚洲伊人久久综合一区二区 | 我要看欧美精品一级毛片 | 成人a毛片免费全部播放 |