以阶段分析为基础之sqlinjection防御系统

上传人:xiao****1972 文档编号:73183664 上传时间:2019-01-25 格式:PPT 页数:24 大小:1.67MB
返回 下载 相关 举报
以阶段分析为基础之sqlinjection防御系统_第1页
第1页 / 共24页
以阶段分析为基础之sqlinjection防御系统_第2页
第2页 / 共24页
以阶段分析为基础之sqlinjection防御系统_第3页
第3页 / 共24页
以阶段分析为基础之sqlinjection防御系统_第4页
第4页 / 共24页
以阶段分析为基础之sqlinjection防御系统_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《以阶段分析为基础之sqlinjection防御系统》由会员分享,可在线阅读,更多相关《以阶段分析为基础之sqlinjection防御系统(24页珍藏版)》请在金锄头文库上搜索。

1、以階段分析為基礎之SQL Injection防禦系統,指導教授:鄭錦楸 報告人:魏宏吉 版權聲明:本報告僅使用在學校報告與練習之用,並無其他用途,若有侵權問題,煩請告知!,大綱,1.研究目的 2.何謂SQL Injection攻擊 3.研究動機 4.研究方法 5.預計完成的工作項目,1.研究動機,隨著網際網路的蓬勃發展,網頁也越來越多 元化,現今網頁已與資料庫脫離不了關係。 根據OWASP的統計報告表示,2010年十大網 路風險排名,SQL Injection已經成為排行榜 上的第一名,這樣表示,網頁資料庫的安全性 越來越重要了。,資料來源:OWASP,攻擊者透過網頁應用程式所提供的輸入欄位來

2、輸入攻擊字串來破壞原有的SQL語句結構,以及執行攻擊者輸入的指令,來達到對資料庫內容進行查詢、新增、修改、刪除,甚至破壞整個資料庫。 SQL攻擊者常用的SQL指令有: Select、Where、having、Group by、Like,2.何謂SQL Injection攻擊,2.1 SQL Injection攻擊原理,一般輸入帳號密碼的網站的SQL語法 select * from 會員 where 身分證 = “& request(“uid“) &“ And 會員密碼 = “& request(“pw“) & “ 如果正常使用者帳號 A123456789,密碼 1234 select * fr

3、om 會員 where 身分證 = A123456789 And 會員密碼 = 1234 輸入的帳號與密碼等資訊會取代ASP( or PHP、JSP)中的變數,並由兩個單引號( )所包住,正常的連線狀態,SQL Injection攻擊,假設攻擊者已知系統中存在一個A123456789的帳號,但攻擊者不知其密碼,不過攻擊者還是可以使用SQL Injection的方式跳過密碼的驗證,而進入到系統。 攻擊者只要在身分證的欄位輸入 A123456789- 即可不須輸入密碼而進入到系統。,SQL Injection攻擊,3.研究目的,大部分的程式設計師都沒有資訊安全的概念, 往往忽略了程式的安全性。 因

4、此我們想開發一套SQL Injection攻擊防禦 系統,讓程式設計師不用擔心自己撰寫的程式 是否易遭受到駭客的SQL Injection攻擊,如此 一來,程式設計師只要專心賺寫程式即可。,4.研究方法,我們提出一個架構來實作SQL Injection的防 禦系統,此架構分成三個階段以及四個模組。,系統架構圖,三個階段 1.資料建置階段 2.權限配置階段 3.SQL語句驗證階段 四個模組 1.權限配對模組 2.語句分離模組 3.輸入內容驗證模組 4.SQL語句驗證模組,4.1 資料建置階段,在資料建置階段,我們會將每一位使用者能使 用的SQL語句定義在比對列表內,且還會將使用 者不可以輸入的語

5、句定義在資料集內。,權限列表,資料表,4.2 權限配置階段,伺服器欲與資料庫做連線時,會發送一個登入 需求封包給資料庫,需求內容封包含有帳號、密 碼及資料庫名稱。 在此階段,需求登入封包會先被權限配對模組 攔截,權限配對模組會分析需求封包的內容,並 與權限列表做比對,找出該帳號能使用的SQL語 句,將其結果傳送給語句分離模組。,4.3 SQL語句驗證階段,這此階段,當網頁伺服器送出SQL語句要存取 資料庫時,會先經過架構驗證模組的驗證,架 構驗證模組會使用Needleman-Wunsch演算法來 將SQL語句內,使用者輸入的字串分離出來。,4.3.1 Needleman-Wunsch Algo

6、rithm,(一)產生一個矩陣 1. 定義正常SQL語句: A = a1a2aN,且長度Len(A) = N 2. 定義含有使用者輸入SQL語句: B = b1b2bM,且長度Len(B) = M 3. 定義最長共同子序列(Longest Common Subsequence)的矩陣: LCS(j, k) = LCS(a1a2aj, b1b2bk) 其中0 j N,0 k M 4. 若矩陣aj= bk,則 LCS(j, k) = LCS(j-1, k-1)+1, 但若是ajbk,則 LCS(j, k)= Max( LCS(j-1, k-1),LCS(j-1,j), LCS(j, k-1),(二

7、)回溯矩陣,找出兩個語句相異的部分 定位在矩陣最右下角那一格,若aj=bk,則回溯到左上角單元格若ajbk,回溯到左上、上、左邊的值為最大的單元格,若有最大值相同的情形,則其優先級按照左上角、上面、左邊的順序,直到回溯至矩陣的左上角為止。 假設有兩個SQL語句: 含使用者輸入的語句 select * from user where id = ken and pw = xyz 防禦系統設定的合法語句 select * from user where lo = and pw = 為了整個表達可以完整的被呈現,所以我們把一些符號做了簡化的動作 S=select , F=from ,W=where,當

8、使用者輸入的字串被分離出來之後,我們 會將使用者輸入的字串傳送至輸入內容驗證模 組去判斷是否合法。 若判斷為合法,則回傳Successful的訊息給 SQL語句驗證模組,否則傳回Failure。,4.3.2 SQL語句驗證模組,使用Snort Inline來實作SQL語句驗證模組。,合法的SQL語句,非法的SQL語句,5.預計完成的工作項目,本計畫將被劃成三個階段來執行,以下將明確 定義階段時間與工作內容: 1.前置作業階段 期間: 2011/10/012011/11/01 工作產品:蒐集所有的SQL Injection語 法、其他文件製作 2.系統建置階段 期間: 2011/11/012012/09/01 工作產品:主系統、規則資料庫、SQL語 句驗證系統,3.系統測試階段 期間: 2012/09/012012/10/01 工作產品:系統測試、測試報告撰寫,Many thanks for your listening,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号