SQL注入攻擊對(duì)企業(yè)安全形成巨大潛在威脅。一旦這種攻擊得逞,黑客可利用這種攻擊危害你的網(wǎng)絡(luò)并訪問(wèn)破壞你的數(shù)據(jù),甚至控制你的電腦。
什么是SQL注入?
SQL注入的原理十分簡(jiǎn)單。當(dāng)應(yīng)用把客戶數(shù)據(jù)當(dāng)作一種輸入的時(shí)候,那些心懷不軌的人就有機(jī)會(huì)注入刻意編寫(xiě)的數(shù)據(jù),這些數(shù)據(jù)會(huì)導(dǎo)致輸入行為會(huì)成為SQL查詢的一部分。
SQL注入是通過(guò)把SQL命令插入到Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過(guò)WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊。
當(dāng)應(yīng)用程序使用輸入內(nèi)容來(lái)構(gòu)造動(dòng)態(tài)sql語(yǔ)句以訪問(wèn)數(shù)據(jù)庫(kù)時(shí),會(huì)發(fā)生sql注入攻擊。如果代碼使用存儲(chǔ)過(guò)程,而這些存儲(chǔ)過(guò)程作為包含未篩選的用戶輸入的字符串來(lái)傳遞,也會(huì)發(fā)生sql注入。sql注入可能導(dǎo)致攻擊者使用應(yīng)用程序登陸在數(shù)據(jù)庫(kù)中執(zhí)行命令。如果應(yīng)用程序使用特權(quán)過(guò)高的帳戶連接到數(shù)據(jù)庫(kù),這種問(wèn)題會(huì)變得很?chē)?yán)重。在某些表單中,用戶輸入的內(nèi)容直接用來(lái)構(gòu)造(或者影響)動(dòng)態(tài)sql命令,或者作為存儲(chǔ)過(guò)程的輸入?yún)?shù),這些表單特別容易受到sql注入的攻擊。而許多網(wǎng)站程序在編寫(xiě)時(shí),沒(méi)有對(duì)用戶輸入的合法性進(jìn)行判斷或者程序中本身的變量處理不當(dāng),使應(yīng)用程序存在安全隱患。這樣,用戶就可以提交一段數(shù)據(jù)庫(kù)查詢的代碼,根據(jù)程序返回的結(jié)果,獲得一些敏感的信息或者控制整個(gè)服務(wù)器,于是sql注入就發(fā)生了。
例如,以下列代碼為例:
SELECT * FROM Users WHERE Username='$username' AND Password='$password'
該代碼旨在展示用戶列表的用戶名和密碼記錄。使用Web界面,當(dāng)系統(tǒng)提示輸入用戶名和密碼的時(shí)候,黑客可能會(huì)輸入:
1 or 1=1
1 or 1=1
結(jié)果是:
SELECT * FROM Users WHERE Username='1' OR '1' = '1' AND Password='1' OR '1' = '1'
黑客已經(jīng)將OR條件成功注入驗(yàn)證過(guò)程。更糟糕的是,條件'1' = '1'通常為真,因此這個(gè)SQL查詢往往會(huì)導(dǎo)致黑客繞過(guò)驗(yàn)證過(guò)程。
用類似“;”的符號(hào)將另一個(gè)查詢附加到已有查詢之后(此附加查詢還對(duì)一部分已有查詢進(jìn)行解釋)。黑客可能刪除你的整個(gè)列表,甚至更改其中的數(shù)據(jù)。黑客可以用命令來(lái)控制你的操作系統(tǒng),從而操控你的電腦,并將之作為攻擊你其他網(wǎng)絡(luò)的一個(gè)中間站??偠灾琒QL注入攻擊可帶來(lái)以下后果:
數(shù)據(jù)私密性的喪失
數(shù)據(jù)完整性的喪失
數(shù)據(jù)泄漏
損害整個(gè)網(wǎng)絡(luò)
豫公網(wǎng)安備41018402000614號(hào)