計(jì)算機(jī)系統(tǒng)安全課程論文_第1頁
計(jì)算機(jī)系統(tǒng)安全課程論文_第2頁
計(jì)算機(jī)系統(tǒng)安全課程論文_第3頁
計(jì)算機(jī)系統(tǒng)安全課程論文_第4頁
計(jì)算機(jī)系統(tǒng)安全課程論文_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、計(jì)算機(jī)系統(tǒng)安全課程論文 學(xué)號(hào):24 姓名:田艷玲 班級(jí):計(jì)科1101 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)院:信息科學(xué)與工程摘 要隨著網(wǎng)絡(luò)技術(shù)和信息技術(shù)的發(fā)展,越來越多的不安全因素威脅著我們的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng),其中SQL注入式其中的一種,它利用SQL語言的漏洞,對(duì)數(shù)據(jù)庫、計(jì)算機(jī)系統(tǒng)等進(jìn)行攻擊。這種攻擊可以跳過防火墻的檢測(cè),不易察覺。一旦攻擊成功,它可以進(jìn)行信息的盜取、網(wǎng)絡(luò)和系統(tǒng)的癱瘓,被視為整個(gè)網(wǎng)絡(luò)的威脅。防止SQL注入有很多方式,本實(shí)驗(yàn)通過編程式代碼防止其發(fā)生。對(duì)SQL注入和注入防范分別進(jìn)行演示,使更好的理解SQL注入與防范的過程。更多的了解有關(guān)于SQL注入的知識(shí)。關(guān)鍵字:SQL注入;數(shù)據(jù)庫;防范目 錄

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注入選題的設(shè)計(jì)目標(biāo)與原理32.1 SQL選題目標(biāo)32.2 SQL注入選題設(shè)計(jì)原理3三、SQL選題設(shè)計(jì)方案43.1 常見相關(guān)技術(shù)比較43.1.1 編程防范43.1.2 數(shù)據(jù)庫配置防范43.1.3 操作系統(tǒng)配置防范43.2 我所采用的技術(shù)5四、SQL注入選題實(shí)驗(yàn)環(huán)境搭建54.1 配置java JDK54.2 使用Eclipse54.3 安裝Oracle數(shù)據(jù)庫5五、SQL注入選題方案實(shí)施55.1方案設(shè)

3、計(jì)結(jié)構(gòu)示意圖55.2方案實(shí)施步驟6六、總結(jié)116.1 SQL注入選題設(shè)計(jì)總結(jié)116.2 對(duì)本門課程的認(rèn)識(shí)及總結(jié)11SQL注入在信息系統(tǒng)開發(fā)中的系統(tǒng)安全防范設(shè)計(jì)一、緒論1.1研究的背景和意義1.1.1研究的背景隨著網(wǎng)絡(luò)技術(shù)和信息技術(shù)的發(fā)展,信息系統(tǒng)的體系結(jié)構(gòu)也逐漸從C/S(客戶/服務(wù)器)模式發(fā)展成B/S(瀏覽器/服務(wù)器)模式,B/S模式的信息系統(tǒng)具有更好的可維護(hù)性,系統(tǒng)的安裝、運(yùn)行、升級(jí)都十分方便,但是,正是這種方便,同時(shí)也給了攻擊提供了方便SQL注入攻擊就是其中的一種。1.1.2研究的意義SQL是結(jié)構(gòu)化查詢語言(Structured Query Language)的縮寫,是標(biāo)準(zhǔn)的數(shù)據(jù)庫操作語言

4、,當(dāng)今的信息系統(tǒng)也離不開數(shù)據(jù)庫,因此也離不開SQL。SQL注入攻擊(SQL Injection Attack)是攻擊者應(yīng)用http(Hypertext Transfer Protocol,超文本傳輸協(xié)議)的請(qǐng)求B/S模式的信息系統(tǒng)發(fā)送惡意的SQL腳本,探測(cè)出信息系統(tǒng)開發(fā)者編程過程中的漏洞,然后利用這些漏洞,對(duì)信息系統(tǒng)的數(shù)據(jù)庫內(nèi)容進(jìn)行直接檢索或修改。許多信息系統(tǒng)由于開發(fā)者的疏忽,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行嚴(yán)格判斷,使應(yīng)用程序存在漏洞,造成安全隱患,攻擊者就是利用這些漏洞,達(dá)到攻擊的目的。1.2需求分析為演示SQL所產(chǎn)生的效果,我將做一個(gè)系統(tǒng),使用SQL注入進(jìn)行登陸,完成效果,下面是制作系統(tǒng)所

5、需要用到的核心技術(shù)。1.2.1 SQL語言結(jié)構(gòu)化查詢語言(Structured Query Language)簡(jiǎn)稱SQL(發(fā)音:/s kju l/ S-Q-L),結(jié)構(gòu)化查詢語言是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時(shí)也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。結(jié)構(gòu)化查詢語言是高級(jí)的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng), 可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能。1.2.2

6、 Servletservlet是在服務(wù)器上運(yùn)行的小程序。這個(gè)詞是在Java applet的環(huán)境中創(chuàng)造的,Java applet是一種當(dāng)作單獨(dú)文件跟網(wǎng)頁一起發(fā)送的小程序,它通常用于在客戶端運(yùn)行,結(jié)果得到為用戶進(jìn)行運(yùn)算或者根據(jù)用戶互作用定位圖形等服務(wù)。服務(wù)器上需要一些程序,常常是根據(jù)用戶輸入訪問數(shù)據(jù)庫的程序。這些通常是使用公共網(wǎng)關(guān)接口(CGI(Common Gateway Interface))應(yīng)用程序完成的。然而,在服務(wù)器上運(yùn)行Java,這種程序可使用Java編程語言實(shí)現(xiàn)。在通信量大的服務(wù)器上,Javaservlet的優(yōu)點(diǎn)在于它們的執(zhí)行速度更快于CGI程序。各個(gè)用戶請(qǐng)求被激活成單個(gè)程序中的一個(gè)線

7、程,而無需創(chuàng)建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請(qǐng)求的系統(tǒng)開銷將明顯降低。1.2.3 JSPJSP是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁java程序片段可以操縱數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,這樣大大降低了對(duì)客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java,也可以訪問JSP網(wǎng)頁。JSP全名為Java Server Pa

8、ges,其根本是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),他實(shí)現(xiàn)了Html語法中的java擴(kuò)張(以 形式)。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。通常返回給客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶端。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁所需要的功能。通常JSP頁面很少進(jìn)行數(shù)據(jù)處理,只是用來實(shí)現(xiàn)網(wǎng)頁的靜態(tài)化頁面,只是用來提取數(shù)據(jù),不會(huì)進(jìn)行業(yè)務(wù)處理。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,

9、來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)的顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 JSP(JavaServer Pages)是一種動(dòng)態(tài)頁面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP

10、配合才能完成。JSP具備了Java技術(shù)的簡(jiǎn)單易用,完全的面向?qū)ο螅哂衅脚_(tái)無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。1.2.4 TomcatTomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對(duì)于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)對(duì)HTML 頁面的訪問請(qǐng)求。實(shí)際上Tomcat 部分是Apache 服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。訣竅是,當(dāng)配置

11、正確時(shí),Apache 為HTML頁面服務(wù),而Tomcat 實(shí)際上運(yùn)行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。目前Tomcat最新版本為8.0.0-RC1 (alpha) Released。Tomcat 很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都

12、可以更改它或在其中加入新的功能。2、 SQL注入選題的設(shè)計(jì)目標(biāo)與原理2.1 SQL選題目標(biāo)進(jìn)行SQL注入選題,更深一步的了解SQL注入的危害和形式。2.2 SQL注入選題設(shè)計(jì)原理信息系統(tǒng)基本上都是靠數(shù)據(jù)庫來支撐的,盡管現(xiàn)在用的數(shù)據(jù)管理系統(tǒng)種類較多,但是他們基本上都支持SQL,雖然針對(duì)各種數(shù)據(jù)庫管理系統(tǒng)的SQL語法不盡相同,但基本上是大同小異,易于區(qū)分和掌握,并且對(duì)于絕大多數(shù)防火墻來說,這種攻擊時(shí)“合法”的,因此SQL注入攻擊易于實(shí)施,具有廣泛性。一旦攻擊成功,信息系統(tǒng)所用數(shù)據(jù)庫中的數(shù)據(jù)可以任由攻擊者查看和修改,攻擊者可以直接在數(shù)據(jù)庫中添加具有管理員權(quán)限的用戶,從何獲得系統(tǒng)管理員權(quán)限,其危害是極

13、其嚴(yán)重的;如果信息系統(tǒng)中存放有秘密數(shù)據(jù),則造成秘密泄露;如果攻擊者修改數(shù)據(jù)庫中的數(shù)據(jù),要么造成系統(tǒng)的癱瘓,要么使系統(tǒng)中的數(shù)據(jù)以假亂真,誤導(dǎo)系統(tǒng)的使用者做出錯(cuò)誤的決策,從而造成更大的危險(xiǎn)。當(dāng)今的數(shù)據(jù)庫管理系統(tǒng)都有一些工具和組件,可以直接與操作系統(tǒng)及網(wǎng)絡(luò)聯(lián)接。這就意味著攻擊者通過SQL注入攻擊一個(gè)信息系統(tǒng)后,其危害就不只局限于存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù),攻擊者還可以設(shè)法獲得對(duì)DBMS(數(shù)據(jù)庫管理系統(tǒng))所在的主機(jī)的交互式訪問,使其危害從數(shù)據(jù)庫向操作系統(tǒng)、甚至整個(gè)網(wǎng)絡(luò)蔓延。因此,我們不僅應(yīng)當(dāng)將SQL注入攻擊看作是一個(gè)對(duì)存儲(chǔ)在數(shù)據(jù)庫上數(shù)據(jù)的威脅,而且應(yīng)當(dāng)看作是對(duì)整個(gè)網(wǎng)絡(luò)的威脅。3、 SQL選題設(shè)計(jì)方案3.1

14、常見相關(guān)技術(shù)比較防止SQL注入的方法可以從系統(tǒng)編程防范、安全配置數(shù)據(jù)庫管理系統(tǒng)、安全配置操作系統(tǒng)等方面進(jìn)行:3.1.1 編程防范編程防范就是在編寫的程序中加強(qiáng)安全防范,堵塞漏洞。編程防范總的原則就是少特權(quán)、多檢驗(yàn)。少特權(quán):不要給數(shù)據(jù)庫連接或數(shù)據(jù)庫用戶太多的權(quán)限,應(yīng)為不同的類型的操作建立和使用不同的賬戶,其權(quán)限與其操作相匹配。多檢驗(yàn):對(duì)用戶輸入從多方面檢驗(yàn)其合法性,如檢驗(yàn)數(shù)據(jù)庫中是否包含單引號(hào)、雙引號(hào)、分號(hào)、逗號(hào)、冒號(hào)、連接號(hào)等特殊字符或SQL語句、函數(shù)、數(shù)據(jù)類型等保留字符串,數(shù)據(jù)類型是否與預(yù)期類型匹配,數(shù)據(jù)長(zhǎng)度是否超長(zhǎng)等,一旦發(fā)現(xiàn)與預(yù)期不符的情況,應(yīng)該放棄執(zhí)行。3.1.2 數(shù)據(jù)庫配置防范數(shù)據(jù)庫

15、管理系統(tǒng)往往提供一些安全方面的配置項(xiàng),如果將這些配置項(xiàng)配置準(zhǔn)確,可以大幅度提高防范攻擊能力:使用安全的賬號(hào)和密碼策略、使用Windows身份驗(yàn)證模式和管理擴(kuò)展存儲(chǔ)過程。3.1.3 操作系統(tǒng)配置防范操作系統(tǒng)一般都提供一些安全功能,如果配置好這些安全功能,就能對(duì)攻擊起到一定的防范作用:選擇安全的文件系統(tǒng)、對(duì)數(shù)據(jù)庫文件進(jìn)行權(quán)限設(shè)置與加密和對(duì)應(yīng)用系統(tǒng)文件進(jìn)行權(quán)限設(shè)置與加密。3.2 我所采用的技術(shù)我將演示在編程防范上所進(jìn)行的防范:在編程代碼中對(duì)SQL注入進(jìn)行防范。只是對(duì)SQL注入的過程進(jìn)行演示。4、 SQL注入選題實(shí)驗(yàn)環(huán)境搭建4.1 配置java JDK4.2 使用Eclipse下載eclipse軟件,

16、配置好tomcat服務(wù)器。4.3 安裝Oracle數(shù)據(jù)庫并創(chuàng)建用戶,表格,添加數(shù)據(jù)。五、SQL注入選題方案實(shí)施5.1方案設(shè)計(jì)結(jié)構(gòu)示意圖 編寫shopping04項(xiàng)目SQL注入防范演示SQL注入演示java.sql.PreparedStatementjava.sql.StatementSQL注入防范成功SQL注入成功java.sql.PreparedStatement是Java類庫中的一個(gè)類,可以有效的防止SQL注入,而java.sql.Statement無法防止SQL注入,尤其是代碼中編寫代碼時(shí)SQL語句使用拼接式。5.2方案實(shí)施步驟1、編寫shopping04項(xiàng)目,作為SQL注入防范的演示。

17、項(xiàng)目架構(gòu)如圖: 防止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數(shù)據(jù)庫,添加此項(xiàng)目所需要的表、序列、觸發(fā)器和數(shù)據(jù)。數(shù)據(jù)庫架構(gòu)如圖: 3、復(fù)制shopping04項(xiàng)目,命名為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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論