課程:《密碼與安全新技術專題》程序員
班級: 201892
姓名: 郭開世
學號:20189221
上課教師:謝四江
上課日期:2019年2月26日
必修/選修: 選修web
學科背景:
隨着信息技術的不斷髮展(通訊→計算機→網絡→網絡化社會),網絡安全技術一直在不斷進步(斯巴達加密榜→密碼技術、通訊保密、內容篡改)。算法
典型攻擊方式:sql
威脅方-防禦方的非對稱性shell
常見的Web漏洞:數據庫
張健毅老師講課節奏很好,聲音頗有磁性。以前本科時學習過一些web和數據庫相關的課程,當時的課程主要是功能上的實現,對於安全方面確實沒有進行很好的設計與考慮。既然已經進行安全、密碼方面的研究生學習,在從此的課程設計、項目實現等具體工做是要時刻保持安全的思惟。這學期我還選修了《網絡攻防實踐》,相信這次課程對於這門課也有很大的啓發。編程
因論文庫的限制,我找的論文都是IEEE中的,具體信息見參考文獻。安全
SQL注入攻擊對數據庫驅動的Web應用程序構成嚴重的安全威脅。這種攻擊使攻擊者能夠輕鬆訪問應用程序的底層數據庫以及這些數據庫包含的潛在敏感信息。黑客經過專門設計的輸入,能夠訪問數據庫的內容,不然沒法這樣作。這一般經過更改Web應用程序中使用的SQL語句來完成。服務器
攻擊者的意圖是繞過身份驗證並從Web應用程序數據庫中提取信息。在這種類型的攻擊中,黑客將代碼注入一個或多個條件語句,以便這些語句的執行結果老是評估爲真[6]。若是攻擊成功,代碼將顯示全部返回的記錄或執行某些操做,前提是至少返回一條記錄。通常返回true的經常使用語句是1 = 1.這意味着經過在原始查詢語句中附加「或1 = 1」,查詢結果將始終爲true。cookie
攻擊目的是識別可注射參數,執行數據庫指紋打印以及提取機密數據。此類攻擊基於編寫生成錯誤消息的查詢語句。拒絕查詢時,將從數據庫返回一條錯誤消息,其中包含有助於攻擊者的有用調試信息。
繞過身份驗證過程並經過將union運算符插入到普通查詢中來提取數據。
此攻擊插入惡意SQL查詢,這將致使在與數據庫的一個鏈接中執行一系列SQL語句。若是運算符能夠處理許多SQL查詢; 在每一個查詢結束後添加。
例:SELECT * FROM users WHERE user name = admin AND password = 3333; DROP TABLE用戶; - ;.
此攻擊經過使用IF語句完成,有三種類型:基於時間,基於錯誤和基於內容。
例:http://www.vulnerable.com/goods。a?id = 34; if +(system user = sa)+ WAITFOR + DELA Y +0:0:10。
攻擊者試圖用惡意輸入執行數據庫中存在的存儲過程
靜態分析是在到達執行階段以前在系統源代碼中找到弱點和惡意代碼,主要是語言特定的。
靜態分析缺點包括:
動態方法技術可用於分析由Web應用程序使用用戶輸入數據生成的動態或運行時SQL查詢。
動態技術下在運行時生成的SQL注入檢測方法,在將查詢發佈到數據庫服務器以前執行查詢,查詢的異常性質致使它甚至不會傳遞到數據庫執行。
動態分析的主要缺點是在運行時生成模型所涉及的開銷。
組合方法利用靜態分析和動態分析方法的優點來檢測和防止SQL注入。在靜態階段,識別熱點,以後建立模型,指示能夠在該熱點處進行的全部有效查詢。在運行時,將檢查運行時查詢以查看它們是否與其模型匹配。若是不是,則不會將查詢發送到數據庫以供執行。
Padma N Joshi ; N. Ravishankar ; M. B. Raju ; N.CH. Ravi等提議開發一個用於身份驗證訪問的安全系統並應用SQL注入攻擊來檢查其安全性。換句話說,設想的系統不從文本框中得到任何狂野的字符。
算法設計以下:
Rajashree A. Katole ; Swati S. Sherekar ; Vilas M. Thakare等介紹了保護Web應用程序免受SQL注入攻擊的SQL注入檢測機制。他們提出了使Web應用程序可以在丟失任何數據以前檢測代碼注入(SQL注入)攻擊的新方法。該經過使用組合的靜態和動態分析來檢測注射攻擊。參數值在動態即運行時從SQL查詢中刪除,並與固定或靜態分析的SQL查詢進行比較,即提早進行比較。
陳平提出的方法基於ISR(指令集隨機化)檢測二階SQL注入攻擊。該方法隨機化Web應用程序中包含的可信SQL關鍵字,以動態構建新的SQL指令集,並在DBMS以前添加代理服務器,代理檢測收到的SQL指令是否包含標準SQL關鍵字以查找攻擊行爲。
該方法採用在Web服務器和數據庫服務器之間構建代理服務器。代理服務器有兩個主要功能,一個是檢測SQL注入攻擊,另外一個是將無害指令去標準化爲標準SQL語句並將其轉發給DBMS。
Qais Temeiza ; Mohammad Temeiza ; Jamil Itmazi等提出了一種基於密碼學和語法感知來防止SQL注入的新方法。
使用兩種方法來防止SQL注入攻擊:
使用了快速安全的SHA-l algorthim。這種方法是經過刪除查詢屬性值,而後散列查詢並將哈希值與先前生成和散列的普通查詢哈希值進行比較。實如今使用散列機制的嵌入式查詢中防止SQL注入。若是兩個哈希值相同則執行SQL查詢,若是不是SQL查詢將被拒絕。
使用語法感知(在易受攻擊的存儲過程當中阻止SQL注入)來經過搜索特定的SQL注入簽名,shell命令以及可用於執行攻擊的任何Unicode字符來阻止存儲過程當中的SQL注入攻擊。
Ahmad Ghafarian等在An emulation of sql injection disclosure and deterrence中提出了一種新的混合方法來檢測和防止SQLIA,是靜態和動態方法的結合。該方法包括三個階段,即數據庫設計,實現和公共網關接口(CGI)。