Gosling的夾子
          我在天空寫下你的名字,被風兒帶走了;我在沙灘寫下你的名字,被浪花帶走了;于是我在大街小巷的每一個角落寫下你的名字,我靠!!我被警察帶走了!
          posts - 5,comments - 4,trackbacks - 0

          吐血詢問Jsp中怎么防止Sql注入?

          網(wǎng)上找了半天也沒找到,只有asp的,只能發(fā)這了,往高人指點啊

          原來以為只有asp可以注入,今天試了試jsp的居然也有啊,暈

          這應(yīng)該是個很普遍的問題,希望管理員別刪

          還有我的程序基本結(jié)束了,可能的話,希望有個比較簡介的方法,

          期待中啊!!!!!


          asp中完美的解決方案


          FeedBack:
          # 一家上海的專業(yè)翻譯公司
          2006-08-09 16:03 | allenxv
          好!


          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          前不久找到一專業(yè)翻譯公司,上海的大家可以到他們的網(wǎng)站上去看看!

          [url=http://www.acmetranslation.com]上海翻譯公司[/url]
          [url=http://www.paper-translation.com]翻譯公司[/url]
          一家上海的專業(yè)翻譯公司  回復(fù)  更多評論
            
          # re: 吐血詢問Jsp中怎么防止Sql注入?
          2007-05-11 21:55 | dsfg
          dfdsfsdf
          我是玉
          dfi
          ewq
          wq efie
          dsfdi dsifajs
          dsfasf
          q j 我是入  回復(fù)  更多評論
            
          # re: 吐血詢問Jsp中怎么防止Sql注入?
          2007-05-11 21:56 | dsfg
          q我是奪  回復(fù)  更多評論
            
          # re: 吐血詢問Jsp中怎么防止Sql注入?
          2007-12-31 11:02 | 拽拽
          SQL 注入簡介:
          SQL注入是最常見的攻擊方式之一,它不是利用操作系統(tǒng)或其它系統(tǒng)的漏洞來實現(xiàn)攻擊的,而是程序員因為沒有做好判斷,被不法

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

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

          用戶名: ' or 1=1 --

          密 碼:

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

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

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

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

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

          為了更明白些,可以將其復(fù)制到SQL分析器中,將會發(fā)現(xiàn),這條語句會將數(shù)據(jù)庫的數(shù)據(jù)全部讀出來,為什么呢?

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

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

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

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

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

          第一種采用預(yù)編譯語句集,它內(nèi)置了處理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(".*([';]+|(--)+).*", " ");
          }

          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);
          ...
          這個東西很簡單,也很常見,方法還有很多,如果您有好的方法希望貼出來,大家一起學(xué)習學(xué)習。
            回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 如皋市| 玉环县| 湾仔区| 平南县| 光泽县| 运城市| 贵州省| 东平县| 新巴尔虎右旗| 黄冈市| 谷城县| 梨树县| 上饶市| 长治县| 安图县| 明水县| 礼泉县| 子洲县| 博客| 桂阳县| 禹城市| 香格里拉县| 新田县| 万源市| 邹城市| 祁门县| 西峡县| 桐乡市| 乌拉特后旗| 康马县| 衡水市| 盈江县| 雷山县| 南靖县| 右玉县| 翼城县| 阿勒泰市| 仪征市| 海淀区| 姜堰市| 寻乌县|