




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機系統安全課程論文 學號:24 姓名:田艷玲 班級:計科1101 專業:計算機科學與技術 學院:信息科學與工程摘 要隨著網絡技術和信息技術的發展,越來越多的不安全因素威脅著我們的計算機網絡系統,其中SQL注入式其中的一種,它利用SQL語言的漏洞,對數據庫、計算機系統等進行攻擊。這種攻擊可以跳過防火墻的檢測,不易察覺。一旦攻擊成功,它可以進行信息的盜取、網絡和系統的癱瘓,被視為整個網絡的威脅。防止SQL注入有很多方式,本實驗通過編程式代碼防止其發生。對SQL注入和注入防范分別進行演示,使更好的理解SQL注入與防范的過程。更多的了解有關于SQL注入的知識。關鍵字:SQL注入;數據庫;防范目 錄
2、一、緒論11.1研究的背景和意義11.1.1研究的背景11.1.2研究的意義11.2需求分析11.2.1 SQL語言11.2.2 Servlet21.2.3 JSP21.2.4 Tomcat3二、SQL注入選題的設計目標與原理32.1 SQL選題目標32.2 SQL注入選題設計原理3三、SQL選題設計方案43.1 常見相關技術比較43.1.1 編程防范43.1.2 數據庫配置防范43.1.3 操作系統配置防范43.2 我所采用的技術5四、SQL注入選題實驗環境搭建54.1 配置java JDK54.2 使用Eclipse54.3 安裝Oracle數據庫5五、SQL注入選題方案實施55.1方案設
3、計結構示意圖55.2方案實施步驟6六、總結116.1 SQL注入選題設計總結116.2 對本門課程的認識及總結11SQL注入在信息系統開發中的系統安全防范設計一、緒論1.1研究的背景和意義1.1.1研究的背景隨著網絡技術和信息技術的發展,信息系統的體系結構也逐漸從C/S(客戶/服務器)模式發展成B/S(瀏覽器/服務器)模式,B/S模式的信息系統具有更好的可維護性,系統的安裝、運行、升級都十分方便,但是,正是這種方便,同時也給了攻擊提供了方便SQL注入攻擊就是其中的一種。1.1.2研究的意義SQL是結構化查詢語言(Structured Query Language)的縮寫,是標準的數據庫操作語言
4、,當今的信息系統也離不開數據庫,因此也離不開SQL。SQL注入攻擊(SQL Injection Attack)是攻擊者應用http(Hypertext Transfer Protocol,超文本傳輸協議)的請求B/S模式的信息系統發送惡意的SQL腳本,探測出信息系統開發者編程過程中的漏洞,然后利用這些漏洞,對信息系統的數據庫內容進行直接檢索或修改。許多信息系統由于開發者的疏忽,沒有對用戶輸入數據的合法性進行嚴格判斷,使應用程序存在漏洞,造成安全隱患,攻擊者就是利用這些漏洞,達到攻擊的目的。1.2需求分析為演示SQL所產生的效果,我將做一個系統,使用SQL注入進行登陸,完成效果,下面是制作系統所
5、需要用到的核心技術。1.2.1 SQL語言結構化查詢語言(Structured Query Language)簡稱SQL(發音:/s kju l/ S-Q-L),結構化查詢語言是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。1.2.2
6、 Servletservlet是在服務器上運行的小程序。這個詞是在Java applet的環境中創造的,Java applet是一種當作單獨文件跟網頁一起發送的小程序,它通常用于在客戶端運行,結果得到為用戶進行運算或者根據用戶互作用定位圖形等服務。服務器上需要一些程序,常常是根據用戶輸入訪問數據庫的程序。這些通常是使用公共網關接口(CGI(Common Gateway Interface))應用程序完成的。然而,在服務器上運行Java,這種程序可使用Java編程語言實現。在通信量大的服務器上,Javaservlet的優點在于它們的執行速度更快于CGI程序。各個用戶請求被激活成單個程序中的一個線
7、程,而無需創建單獨的進程,這意味著服務器端處理請求的系統開銷將明顯降低。1.2.3 JSPJSP是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態技術標準。在傳統的網頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標簽,就構成了JSP網頁java程序片段可以操縱數據庫、重新定向網頁以及發送E-mail等,實現建立動態網站所需要的功能。所有程序操作都在服務器端執行,網絡上傳送給客戶端的僅是得到的結果,這樣大大降低了對客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java,也可以訪問JSP網頁。JSP全名為Java Server Pa
8、ges,其根本是一個簡化的Servlet設計,他實現了Html語法中的java擴張(以 形式)。JSP與Servlet一樣,是在服務器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序段,然后將執行結果連同JSP文件中的HTML代碼一起返回給客戶端。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態網頁所需要的功能。通常JSP頁面很少進行數據處理,只是用來實現網頁的靜態化頁面,只是用來提取數據,不會進行業務處理。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,
9、來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP的技術基礎,而且大型的Web應用程序的開發需要Java Servlet和JSP
10、配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。1.2.4 TomcatTomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。訣竅是,當配置
11、正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本為8.0.0-RC1 (alpha) Released。Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都
12、可以更改它或在其中加入新的功能。2、 SQL注入選題的設計目標與原理2.1 SQL選題目標進行SQL注入選題,更深一步的了解SQL注入的危害和形式。2.2 SQL注入選題設計原理信息系統基本上都是靠數據庫來支撐的,盡管現在用的數據管理系統種類較多,但是他們基本上都支持SQL,雖然針對各種數據庫管理系統的SQL語法不盡相同,但基本上是大同小異,易于區分和掌握,并且對于絕大多數防火墻來說,這種攻擊時“合法”的,因此SQL注入攻擊易于實施,具有廣泛性。一旦攻擊成功,信息系統所用數據庫中的數據可以任由攻擊者查看和修改,攻擊者可以直接在數據庫中添加具有管理員權限的用戶,從何獲得系統管理員權限,其危害是極
13、其嚴重的;如果信息系統中存放有秘密數據,則造成秘密泄露;如果攻擊者修改數據庫中的數據,要么造成系統的癱瘓,要么使系統中的數據以假亂真,誤導系統的使用者做出錯誤的決策,從而造成更大的危險。當今的數據庫管理系統都有一些工具和組件,可以直接與操作系統及網絡聯接。這就意味著攻擊者通過SQL注入攻擊一個信息系統后,其危害就不只局限于存儲在數據庫中的數據,攻擊者還可以設法獲得對DBMS(數據庫管理系統)所在的主機的交互式訪問,使其危害從數據庫向操作系統、甚至整個網絡蔓延。因此,我們不僅應當將SQL注入攻擊看作是一個對存儲在數據庫上數據的威脅,而且應當看作是對整個網絡的威脅。3、 SQL選題設計方案3.1
14、常見相關技術比較防止SQL注入的方法可以從系統編程防范、安全配置數據庫管理系統、安全配置操作系統等方面進行:3.1.1 編程防范編程防范就是在編寫的程序中加強安全防范,堵塞漏洞。編程防范總的原則就是少特權、多檢驗。少特權:不要給數據庫連接或數據庫用戶太多的權限,應為不同的類型的操作建立和使用不同的賬戶,其權限與其操作相匹配。多檢驗:對用戶輸入從多方面檢驗其合法性,如檢驗數據庫中是否包含單引號、雙引號、分號、逗號、冒號、連接號等特殊字符或SQL語句、函數、數據類型等保留字符串,數據類型是否與預期類型匹配,數據長度是否超長等,一旦發現與預期不符的情況,應該放棄執行。3.1.2 數據庫配置防范數據庫
15、管理系統往往提供一些安全方面的配置項,如果將這些配置項配置準確,可以大幅度提高防范攻擊能力:使用安全的賬號和密碼策略、使用Windows身份驗證模式和管理擴展存儲過程。3.1.3 操作系統配置防范操作系統一般都提供一些安全功能,如果配置好這些安全功能,就能對攻擊起到一定的防范作用:選擇安全的文件系統、對數據庫文件進行權限設置與加密和對應用系統文件進行權限設置與加密。3.2 我所采用的技術我將演示在編程防范上所進行的防范:在編程代碼中對SQL注入進行防范。只是對SQL注入的過程進行演示。4、 SQL注入選題實驗環境搭建4.1 配置java JDK4.2 使用Eclipse下載eclipse軟件,
16、配置好tomcat服務器。4.3 安裝Oracle數據庫并創建用戶,表格,添加數據。五、SQL注入選題方案實施5.1方案設計結構示意圖 編寫shopping04項目SQL注入防范演示SQL注入演示java.sql.PreparedStatementjava.sql.StatementSQL注入防范成功SQL注入成功java.sql.PreparedStatement是Java類庫中的一個類,可以有效的防止SQL注入,而java.sql.Statement無法防止SQL注入,尤其是代碼中編寫代碼時SQL語句使用拼接式。5.2方案實施步驟1、編寫shopping04項目,作為SQL注入防范的演示。
17、項目架構如圖: 防止SQL注入的登陸代碼:public Boolean checkUser(String loginid, String password) Connection conn=null;PreparedStatement stmt=null;ResultSet rs=null;try conn=JDBCUtil.getConnection();stmt= conn.prepareStatement(select * from customer where loginid=?);stmt.setString(1, loginid);rs=stmt.executeQuery();wh
18、ile(rs.next()if(password.equals(rs.getString(password)return true;return false; catch (Exception e) e.printStackTrace();finallyJDBCUtil.free(rs, stmt, conn);return false;2、部署Oracle數據庫,添加此項目所需要的表、序列、觸發器和數據。數據庫架構如圖: 3、復制shopping04項目,命名為shopping04_test,改寫代碼,作為SQL注入演示。如圖所示: 不可防止的SQL注入代碼:public Boolean checkUser(String loginid, String password) Connection conn=null;Statement stmt=null;Boolean rs=false;try conn=JDBCUtil.getConnection();stmt=conn.createStatement();String sql=select * from customer where loginid=+loginid+ and password=+password+;rs=stmt.execute(sql);retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4006.3-2021醫務人員個體防護裝備選用規范第3部分:化學危害防護
- DB32/T 3825-2020創新科技產業園區智慧平臺建設規范
- DB32/T 3761.50-2021新型冠狀病毒肺炎疫情防控技術規范第50部分:德爾塔等變異株密切接觸者判定
- DB32/T 3761.14-2020新型冠狀病毒肺炎疫情防控技術規范第14部分:影劇院
- DB32/T 3649-2019草莓集約化容器育苗技術規程
- DB32/T 3580-2019農村產權交易農村養殖水面承包經營權交易服務規范
- DB31/T 926-2015城鎮供水管道水力沖洗技術規范
- DB31/T 438-2014地理標志產品練塘茭白
- DB31/T 1278-2021實驗裸鼴鼠遺傳質量控制
- CAB 1013-2013汽車裝飾用毛皮制品
- PPT失禁性皮炎護理(IAD)
- 幼兒園傳統美德教育培養兒童成長的人品基石
- 柴油安全技術說明書(MSDS)
- 哺乳期的乳房護理課件
- 華為財務管理(6版)-華為經營管理叢書
- 2023年四川省綿陽市中考英語試卷真題(含答案)
- 藥物咨詢記錄
- 【汽車萬向傳動軸的設計5200字(論文)】
- 發電機組行業商業計劃書
- 《公路斜拉橋設計規范》(JTGT 3365-01-2020)正式版
- 南京市小學英語六年級小升初期末試卷(含答案)
評論
0/150
提交評論