|
| |
精品推荐 |
 |
|
| |
|
|
|
|
精通Sql Injection技术
|
日期:2004年3月25日 作者:清风网络学院 查看:[大字体
中字体 小字体]
|
SQL Injection 應稱為 SQL 指令植入式攻擊,主要是屬於 Input Validation 的問題。目前被翻譯成『資料隱碼』攻擊。 SQL Injection攻擊法並非植入電腦病毒,它是描述一個利用寫入特殊SQL程式碼攻擊應用程式的動作。 換言之,只要提供給使用者輸入的介面,又沒有做到相當嚴密的輸入資料型態管制,就有可能會遭受這種行為的攻擊。 Apache、IIS、Domino、Netscape的網站系統,透過ASP、PHP與JSP等程式碼,攻擊破壞各種SQL資料庫。 影響的系統包括MSSQL、MySQL、Oracle、Sybase與DB2等。 一般輸入帳號密碼的網站的SQL語法 select * from member where UID =' "& request("ID") &" ' And Passwd =' "& request("Pwd") & " ' 如果正常使用者帳號A123456789 ,密碼1234 select * from member where UID ='A123456789' And Passwd='1234' 輸入的帳號與密碼等資訊會取代ASP( or PHP、JSP)中的變數,並由兩個單引號(' ')所包住 select * from member where UID =' "& request("ID") &" ' And Passwd =' "& request("Pwd") & " ' 若攻擊者已知系統中已有一個Admin的管理者帳號,則輸入Admin '-- ,即可不須輸入密碼而進入資料庫 select * from member where UID =' Admin '-- ' And Passwd =' ' 註: -- 符號後的任何敘述都會被當作註解 (以上面為例,And子句將被SQL視為說明用) 一旦惡意使用者輸入 使用者帳號' or 1=1 --,密碼asdf1234(任意輸入) select * from member where UID =' ' or 1=1 -- ' And Passwd = 'asdf1234' 一旦惡意使用者輸入 使用者帳號abcdefg (任意輸入) , 密碼asdf (任意輸入) ' or 1=1 -- select * from member where UID =' abcdefg ' And Passwd = ' asdf ' or 1=1 -- ' 如何防範SQL Injection 網頁程式撰寫方面 過濾輸入條件中可能隱含的sql指令,如INSERT、SELECT、UPDATE等 針對輸入條件進行規範,如無必要,應規範為僅可接受大小寫英文字母與數字等 針對特殊的查詢參數進行過濾,如--、 ' 等可利用replace(xx, " ' ", " ' ' ")進行替換 進行程式寫作時,應時常檢查程式是否存在有非預期輸入資料的漏洞。 網站伺服器方面 定期修補作業系統與網站伺服器的漏洞 避免ASP、PHP與JSP程式源碼洩漏,造成使用者可以直接瀏覽 更改預設的網站虛擬路徑,如IIS系統不要使用預設的C:\Inetpub\WWWRoot\的目錄 不提供錯誤訊息給使用者 攻擊者可藉由回報的錯誤訊息得知資料庫的結構 建議將錯誤輸入重導到適當網頁 修改C:\WINNT\Help\iisHelp\common\500-100.asp的預設錯誤網頁 參考資料 The Open Web Application Security Project http://www.owasp.org/asac/input_validation/sql.shtml
上一篇:VBS脚本病毒原理分析与防范
下一篇:另类Exchange2000灾难恢复实录
|
| 精通Sql Injection技术 相关文章: |
|
|
|
| 精通Sql Injection技术 相关软件: |
|
|
|
|