• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      防SQL注入的web系統(tǒng)交互設(shè)計

      2014-09-23 01:45:26毋世曉
      企業(yè)導(dǎo)報 2014年9期
      關(guān)鍵詞:用戶名語句頁面

      毋世曉

      摘要:用戶使用表單頁面進行交互時,系統(tǒng)對關(guān)鍵的SQL操作語句進行預(yù)處理,可以防止SQL注入。經(jīng)過預(yù)處理的數(shù)據(jù)查詢語言比普通意義上的SQL語句更加安全可靠。本文以留言板系統(tǒng)為例,對該系統(tǒng)的功能里涉及登陸、注冊、添加留言的頁面代碼SQL語句部分進行了預(yù)處理,借以保證用戶信息安全。

      關(guān)鍵詞:QL預(yù)處理;留言板;SQL注入引言:根據(jù)Imperva公司的“監(jiān)測黑客論壇:ADC每月網(wǎng)絡(luò)攻擊分析(2012年10月)”報告顯示,在黑客論壇,最常被討論的是拒絕服務(wù)(DoS)/分布式拒絕服務(wù)(DDoS)攻擊和SQL注入。根據(jù)安全云托管公司FireHost公司9月份發(fā)布的報告顯示,在2012年的前兩個季度,SQL注入攻擊上升了69%。SQL注入可以通過判斷Web環(huán)境是否可以進入,進而輸入特殊的語句判斷數(shù)據(jù)庫的類型、判斷數(shù)據(jù)庫的用戶名和密碼,最終進入后臺管理獲取用戶信息,這對Web安全威脅很大。

      本文通過一個詳細的案列來介紹如何在一個系統(tǒng)中利用SQL 預(yù)處理語句防范SQL注入。SQL預(yù)處理語句實現(xiàn)的過程就是內(nèi)部轉(zhuǎn)義的過程,它將一些需要轉(zhuǎn)義的字符進行轉(zhuǎn)義,對SQL語句進行預(yù)處理, 將SQL語句進行內(nèi)部編譯并優(yōu)化,所需要的查詢只需要被解析一次,使用的資源更少,執(zhí)行速度更快,當(dāng)然也更安全。

      系統(tǒng)包括5個模塊:登陸、注冊、添加留言、查看留言,刪除留言。前四個模塊是針對用戶的,后一個模塊是針對管理人員的。

      文章的第一部分是引言,第二部分介紹論文的技術(shù)背景,第三部分介紹系統(tǒng)的詳細設(shè)計,第四部分是實現(xiàn)結(jié)果,第五部分是總結(jié),第六部分是參考文獻。

      一、技術(shù)背景

      本系統(tǒng)使用JSP+JavaBean+Access的方式來開發(fā)留言板系統(tǒng)[1]。所需要的軟件涉及:Apache Tomcat 6.0,jdk1.7.0_17,Microsoft Access 2000, Macromedia Dreamweaver 8, Jcreator LE

      5.00,在所有的軟件安裝成功以后需要配置2個環(huán)境變量:在我的電腦-->屬性-->高級-->環(huán)境變量里,系統(tǒng)變量里選中Path變量雙擊打開,在變量名的最后一個分號后面加入:C:Program FilesJavajdk1.7.0_17in;(前提是JDK是默認安裝的),并在系統(tǒng)變量里新建變量名為ClassPath變量值為C:

      Program FilesJavajdk1.7.0_17lib的系統(tǒng)變量,配置Java所需的運行環(huán)境,是因為JSP頁面里會涉及部分Java代碼[2]。

      在這些軟件中,JDK保證JSP中J(Java)的運行環(huán)境,Tom

      cat充當(dāng)JSP中S(Server)服務(wù)器的功能,Dreamweaver提供

      JSP中P(Page)的編輯環(huán)境。 可以在Jcreator中查看Java文件,并將Java文件編譯成.class文件,.class文件都被部署在C:Program FilesApache Software FoundationTomcat 6.0webappsROOTWEB-INFclassesmypackage文件夾下,在JSP文件中通過import導(dǎo)入這些class文件。

      系統(tǒng)共使用10個文件,其中包括2個class文件(Access

      ConnBean.class, MyUtil.class),6個jsp文件(Login.jsp, liuyan.

      jsp, writely.jsp, viewly.jsp, writelyd.jsp, delete.jsp),2個html頁面(1.html, 2.html)。

      AccessConnBean.class 文件完成連接數(shù)據(jù)庫的功能,MyU

      til.class文件完成GB2312碼到Unicode碼的轉(zhuǎn)換,因表單輸入頁面是GB2312碼,而JSP頁面的字符串是以Unicode顯示的。

      因為涉及將注冊信息及留言信息寫入數(shù)據(jù)庫,系統(tǒng)設(shè)計了2個Access數(shù)據(jù)庫——liuyan.mdb和user_info數(shù)據(jù)庫。JSP訪問Access數(shù)據(jù)庫的方式是JDBC-ODBC[3]。數(shù)據(jù)庫的詳細設(shè)計將在第三章介紹。

      二、留言板系統(tǒng)

      (一)系統(tǒng)功能。本系統(tǒng)共包括2個子系統(tǒng)(用戶登陸和留言系統(tǒng)),共完成5個功能:(1)登陸功能。登陸的用戶必須是數(shù)據(jù)庫里的用戶,如果不是已經(jīng)注冊的用戶,則需要點擊注冊。成功則進入注冊界面,失敗留在當(dāng)前頁面。(2)注冊功能。單輸入自己的用戶名、密碼、郵箱等信息,并通過writelyd.jsp頁面寫入數(shù)據(jù)庫。(3)查看留言。已經(jīng)存在的用戶登錄進入系統(tǒng)以后可以查看留言板信息。(4) 添加留言。用戶輸入正確的用戶名和密碼以后可以進入liuyan.jsp頁面添加留言,留言內(nèi)容會通過write

      ly.jsp頁面添加到數(shù)據(jù)庫。(5)刪除留言。該模塊需要用戶登錄,且必須知道管理員的用戶名和密碼,在2.html輸入要刪除的留言者姓名,通過delete.jsp頁面進行處理,即可刪除該留言者的留言。

      (二)數(shù)據(jù)庫設(shè)計。留言版系統(tǒng)采用Access數(shù)據(jù)庫,因為該數(shù)據(jù)庫設(shè)計比較簡單,只存放用戶注冊信息及留言信息,涉及了數(shù)據(jù)庫的插入,查詢,刪除等操作。

      該系統(tǒng)包含兩個數(shù)據(jù)庫: user_info數(shù)據(jù)庫和liuyan數(shù)據(jù)庫,這兩個數(shù)據(jù)庫各自包含同名的一個表,user_info表包含us

      er_id,password, email, name, sex 5個字段。Liuyan表包含xm,

      email, ly, url 4個字段。

      (三)預(yù)處理實現(xiàn) 。留言板系統(tǒng)涉及用戶信息的有以下3個頁面:Login.jsp, writely.jsp, writelyd.jsp。他們分別完成的功能是使用用戶名和密碼登陸、將注冊信息寫入數(shù)據(jù)庫、將留言信息寫入數(shù)據(jù)庫。這3個頁面都是處理Web表單提交的信息,涉及信息的內(nèi)容包括用戶的用戶名,密碼,郵箱,留言內(nèi)容,姓名,地址等。我們使用預(yù)處理語句處理數(shù)據(jù)庫的查詢、插入等操作, 在防止SQL注入的同時還可以提高系統(tǒng)性能。

      以Login.jsp登錄頁面為例,我們給出關(guān)鍵代碼來給大家作對比,先給出普通版本的:

      AccessBean.OpenConn();

      String sql = “select user_id,password from user_info where

      user_id=‘”+userId+” and password=‘“+password+“”;

      ResultSet rs = AccessBean.executeQuery(sql);

      其中AccessBean是AccessConnBean的一個別名,我們在

      usebean中簡化了這個類名,這個類用來連接Access數(shù)據(jù)庫,根據(jù)數(shù)據(jù)查詢返回結(jié)果集ResultSet。

      其次我們給出PrepareStatement版本的:

      Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);con=

      DriverManager.getConnection(“jdbc:odbc:user_info“,” “,””);

      String sql = select user_id,password from user_info where

      user_id=‘“+userId+” and password=“+password+”;

      PreparedStatement pstmt=con.prepareStatement(sql);

      ResultSet rs=pstmt.executeQuery();

      在這個版本中,第一句是連接JDBC-ODBC驅(qū)動,第二句連接user_info用戶注冊數(shù)據(jù)庫,第三句是SQL查詢語句,第四句將SQL語言進行預(yù)編譯,并通過預(yù)編譯語句對象執(zhí)行查詢,將數(shù)據(jù)結(jié)果返回給ResultSet。

      使用PreparedStatement預(yù)處理語句可以將SQL語言進行預(yù)編譯,預(yù)處理可以自動檢查已經(jīng)綁定好的變量,同時強制轉(zhuǎn)換這些變量使之與底層數(shù)據(jù)庫驅(qū)動相匹配,它會忽略掉一些惡意的字符串,在防范SQL注入的同時因為其預(yù)編譯的功能可以節(jié)約因多次重復(fù)輸入相同條件的SQL語句而消耗的資源。

      總結(jié):該系統(tǒng)經(jīng)測試運行正常,可以實現(xiàn)登錄、注冊、添加留言、查看留言、刪除留言等功能。經(jīng)過Web表單預(yù)提交的數(shù)據(jù)經(jīng)過SQL預(yù)處理可以防止SQL注入。

      參考文獻:

      [1] 劉玉軒. 基于JSP 和MySQL 的留言板系統(tǒng)設(shè)計與實現(xiàn)[J].計算機與信息技術(shù)。

      [2] 張興科. JSP動態(tài)網(wǎng)站設(shè)計項目教程. 北京: 中國人民大學(xué)出版社,2010

      [3] 張志峰等。Java Web技術(shù)整合應(yīng)用與項目實戰(zhàn)。北京:清華大學(xué)出版社,2010.

      [4] 王燕,李明,王惠琴.??Web數(shù)據(jù)庫的連接技術(shù)及安全控制[J].

      猜你喜歡
      用戶名語句頁面
      《護士進修雜志》投稿程序
      刷新生活的頁面
      重點:語句銜接
      精彩語句
      機智的快遞員
      故事會(2017年17期)2017-09-04 17:36:42
      如何搞定語句銜接題
      語文知識(2014年4期)2014-02-28 21:59:52
      同一Word文檔 縱橫頁面并存
      淺析ASP.NET頁面導(dǎo)航技術(shù)
      作文語句實錄
      其實IE也懂Chrome的心
      茌平县| 濮阳县| 甘泉县| 洱源县| 浦县| 左贡县| 海南省| 盈江县| 商城县| 郁南县| 腾冲县| 静乐县| 丹巴县| 台前县| 泌阳县| 永川市| 重庆市| 丹凤县| 奉节县| 敦煌市| 南陵县| 拉萨市| 榕江县| 五指山市| 修武县| 新绛县| 昌都县| 三江| 吴堡县| 高雄县| 鸡西市| 清河县| 金华市| 白朗县| 元阳县| 东明县| 西宁市| 宣恩县| 抚松县| 利津县| 佛山市|