大白話解釋SQL注入,DBA大牛裝腔指南!
互聯(lián)網(wǎng)SQL注入了!由于它的危害之大,它也成為了每一個運維工程師為客戶部署業(yè)務(wù)系統(tǒng)前必做的防御。
問題來了,對接我們的客戶大多數(shù)技術(shù)鉆研不是很”深刻“,我們經(jīng)常因為跟客戶的技術(shù)溝通而抓狂!作為運維俠的我們該如何向非技術(shù)同學(xué)通透白話的解釋SQL注入呢?
SQL是結(jié)構(gòu)化查詢語言(Structured Query Language)的簡稱,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。說的直白一些,就是工程師與數(shù)據(jù)庫進行溝通和交流的一種語言。
SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務(wù)器執(zhí)行惡意的SQL命令。
最常見的比如:我們上網(wǎng)經(jīng)常會看到一些免費或者超低價格的各大視頻網(wǎng)站的會員賬戶和密碼,這些賬戶和密碼怎么來的呢?大部分都是通過WEB表單遞交查詢字符暴出來的。

SQL注入的過程是怎樣實現(xiàn)的呢?
我們來舉個形象的例子~
一天,你代表你的老板去銀行辦理業(yè)務(wù)。你的老板給了你一個信封,上面寫著收銀員的指示。
信件內(nèi)容:
|
在這張紙上寫下A號賬戶的余額。 簽名:Boss |
在途中,你去洗手間的時候,順手把信封放在洗手臺幾分鐘。期間,一個小偷打開信封,在上面加上一些內(nèi)容:“同時將500元從A號賬戶轉(zhuǎn)到另一個B賬戶。”
現(xiàn)在,信件內(nèi)容是:
|
在這張紙上寫下A號賬戶的余額。同時將500元從A號賬戶轉(zhuǎn)到另一個B賬戶。 簽名:Boss |
出納員檢查你的身份,確認(rèn)你是相關(guān)賬戶的授權(quán)人員,便按照信函中的說明進行操作。
結(jié)果Boss被“偷了”500元!
在這個過程中:
- 你的老板是合法的程序代碼;
- 你是將SQL代碼傳遞到數(shù)據(jù)庫的程序代碼和數(shù)據(jù)庫驅(qū)動程序;
- 信函內(nèi)容是傳遞給數(shù)據(jù)庫的SQL代碼;
- 小偷是襲擊者,俗稱“黑客”;
- 出納員是數(shù)據(jù)庫;
- 身份標(biāo)識通常是數(shù)據(jù)庫的登錄名和密碼。
目前,SQL 注入漏洞已成為互聯(lián)網(wǎng)最常見也是影響非常廣泛的漏洞,如何避免這樣的問題發(fā)生呢?
1. 采用預(yù)編譯語句集
出納員在處理信函內(nèi)容的時候,只處理賬戶和金額,對轉(zhuǎn)賬動作不處理。
2. 檢查數(shù)據(jù)類型和格式
出納員在處理信函內(nèi)容的時候,會去查驗小偷添加內(nèi)容的類型和格式,是否符合規(guī)定。
3. 過濾特殊字符
出納員在處理信函內(nèi)容“將500元從123456號賬戶轉(zhuǎn)到另一個654321賬戶”的時候,轉(zhuǎn)譯出現(xiàn)問題,即報錯。




























