- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁(yè)面請求的查詢(xún)字符串,欺騙服務(wù)器執行惡意的SQL命令。在某些表單中,用戶(hù)輸入的內容直接用來(lái)構造(或者影響)動(dòng)態(tài)SQL命令,或作為存儲過(guò)程的輸入參數,這類(lèi)表單特別容易受到SQL注入式攻擊。常見(jiàn)的SQL注入式攻擊過(guò)程類(lèi)如:
?、?某個(gè)ASP.NET Web應用有一個(gè)登錄頁(yè)面,這個(gè)登錄頁(yè)面控制著(zhù)用戶(hù)是否有權訪(fǎng)問(wèn)應用,它要求用戶(hù)輸入一個(gè)名稱(chēng)和密碼。
?、?登錄頁(yè)面中輸入的內容將直接用來(lái)構造動(dòng)態(tài)的SQL命令,或者直接用作存儲過(guò)程的參數。下面是ASP.NET應用構造查詢(xún)的一個(gè)例子:
System.Text.StringBuilder query = new System.Text.StringBuilder(
"SELECT * from Users WHERE login = ")
.Append(txtLogin.Text).Append(" AND password=")
.Append(txtPassword.Text).Append("");
?、?攻擊者在用戶(hù)名字和密碼輸入框中輸入"或1=1"之類(lèi)的內容。
?、?用戶(hù)輸入的內容提交給服務(wù)器之后,服務(wù)器運行上面的ASP.NET代碼構造出查詢(xún)用戶(hù)的SQL命令,但由于攻擊者輸入的內容非常特殊,所以最后得到的SQL命令變成:SELECT * from Users WHERE login = or 1=1 AND password = or 1=1。
?、?服務(wù)器執行查詢(xún)或存儲過(guò)程,將用戶(hù)輸入的身份信息和服務(wù)器中保存的身份信息進(jìn)行對比。
?、?由于SQL命令實(shí)際上已被注入式攻擊修改,已經(jīng)不能真正驗證用戶(hù)身份,所以系統會(huì )錯誤地授權給攻擊者。
如果攻擊者知道應用會(huì )將表單中輸入的內容直接用于驗證身份的查詢(xún),他就會(huì )嘗試輸入某些特殊的SQL字符串篡改查詢(xún)改變其原來(lái)的功能,欺騙系統授予訪(fǎng)問(wèn)權限。
系統環(huán)境不同,攻擊者可能造成的損害也不同,這主要由應用訪(fǎng)問(wèn)數據庫的安全權限決定。如果用戶(hù)的帳戶(hù)具有管理員或其他比較高級的權限,攻擊者就可能對數據庫的表執行各種他想要做的操作,包括添加、刪除或更新數據,甚至可能直接刪除表。
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP