WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
SQL注入
SQL注入(SQL注入攻擊)就是通過把SQL命令插入到Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊.
簡(jiǎn)介[ ]
SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段之一。隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來(lái)越多。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入。
SQL注入攻擊[ ]
當(dāng)應(yīng)用程序使用輸入內(nèi)容來(lái)構(gòu)造動(dòng)態(tài)sql語(yǔ)句以訪問數(shù)據(jù)庫(kù)時(shí),會(huì)發(fā)生sql注入攻擊。如果代碼使用存儲(chǔ)過程,而這些存儲(chǔ)過程作為包含未篩選的用戶輸入的字符串來(lái)傳遞,也會(huì)發(fā)生sql注入。sql注入可能導(dǎo)致攻擊者使用應(yīng)用程序登陸在數(shù)據(jù)庫(kù)中執(zhí)行命令。相關(guān)的SQL注入可以通過測(cè)試工具pangolin進(jìn)行。如果應(yīng)用程序使用特權(quán)過高的帳戶連接到數(shù)據(jù)庫(kù),這種問題會(huì)變得很嚴(yán)重。在某些表單中,用戶輸入的內(nèi)容直接用來(lái)構(gòu)造動(dòng)態(tài)sql命令,或者作為存儲(chǔ)過程的輸入?yún)?shù),這些表單特別容易受到sql注入的攻擊。而許多網(wǎng)站程序在編寫時(shí),沒有對(duì)用戶輸入的合法性進(jìn)行判斷或者程序中本身的變量處理不當(dāng),使應(yīng)用程序存在安全隱患。這樣,用戶就可以提交一段數(shù)據(jù)庫(kù)查詢的代碼,根據(jù)程序返回的結(jié)果,獲得一些敏感的信息或者控制整個(gè)服務(wù)器,于是sql注入就發(fā)生了。
SQL注入原理[ ]
- SQL命令可查詢、插入、更新、刪除等,命令的串接。而以分號(hào)字符為不同命令的區(qū)別。(原本的作用是用于SubQuery或作為查詢、插入、更新、刪除……等的條件式)
- SQL命令對(duì)于傳入的字串參數(shù)是用單引號(hào)字符所包起來(lái)。但連續(xù)2個(gè)單引號(hào)字符,在SQL數(shù)據(jù)庫(kù)中,則視為字串中的一個(gè)單引號(hào)字符。
- SQL命令中,可以注入注解連續(xù)2個(gè)減號(hào)字符——后的文字為注解,或“/*”與“*/”所包起來(lái)的文字為注解
- 如果在組合SQL的命令字串時(shí),未針對(duì)單引號(hào)字符作取代處理的話,將導(dǎo)致該字符變量在填入命令字串時(shí),被惡意竄改原本的SQL語(yǔ)法的作用
SQL注入影響[ ]
- 資料表中的資料外泄,例如個(gè)人機(jī)密資料,帳戶資料,密碼等。
- 數(shù)據(jù)結(jié)構(gòu)被黑客探知,得以做進(jìn)一步攻擊(例如SELECT * FROM sys.tables)。
- 數(shù)據(jù)庫(kù)服務(wù)器被攻擊,系統(tǒng)管理員帳戶被竄改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
- 取得系統(tǒng)較高權(quán)限后,有可能得以在網(wǎng)頁(yè)加入惡意連結(jié)以及XSS。
- 經(jīng)由數(shù)據(jù)庫(kù)服務(wù)器提供的操作系統(tǒng)支援,讓黑客得以修改或控制操作系統(tǒng)(例如xp_cmdshell "net stop iisadmin"可停止服務(wù)器的IIS服務(wù))。
- 破壞硬盤資料,癱瘓全系統(tǒng)(例如xp_cmdshell "FORMAT C:")。
SQL注入防范[ ]
- 在構(gòu)造動(dòng)態(tài)SQL語(yǔ)句時(shí),一定要使用類安全(type-safe)的參數(shù)加碼機(jī)制。大多數(shù)的數(shù)據(jù)API,包括ADO和ADO. NET,有這樣的支持,允許你指定所提供的參數(shù)的確切類型(譬如,字符串,整數(shù),日期等),可以保證這些參數(shù)被恰當(dāng)?shù)豦scaped/encoded了,來(lái)避免黑客利用它們。一定要從始到終地使用這些特性。
- 建立一個(gè)正式的安全過程,做更新時(shí),對(duì)所有的編碼做審評(píng)。
- 不要把敏感性數(shù)據(jù)在數(shù)據(jù)庫(kù)里以明文存放。
- 確認(rèn)編寫了自動(dòng)化的單元測(cè)試,來(lái)特別校驗(yàn)?zāi)愕臄?shù)據(jù)訪問層和應(yīng)用程序不受SQL注入攻擊。
- 鎖定數(shù)據(jù)庫(kù)的安全,只給訪問數(shù)據(jù)庫(kù)的web應(yīng)用功能所需的最低的權(quán)限。
- 從網(wǎng)上下載SQL通用防注入系統(tǒng)的程序,在需要防范注入的頁(yè)面頭部用 來(lái)防止別人進(jìn)行手動(dòng)注入測(cè)試。