對(duì)于飛速發(fā)展的互聯(lián)網(wǎng)來說液斜,大多數(shù)年輕人對(duì)于IT行業(yè)也比較熱衷累贤,不僅前景好,薪資也是越來越高的少漆,促進(jìn)許多朋友在學(xué)習(xí)編程技術(shù)臼膏,但是沒有好的方向,今天小猿圈web安全講師給你講解web安全之SQL注入示损,在學(xué)的過程中不浪費(fèi)時(shí)間少走彎路渗磅。
SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請(qǐng)求的查詢字符串屎媳,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令夺溢,比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊.
SQL注入原理
當(dāng)應(yīng)用程序使用輸入內(nèi)容來構(gòu)造動(dòng)態(tài)sql語句以訪問數(shù)據(jù)庫時(shí)烛谊,會(huì)發(fā)生sql注入攻擊风响。如果代碼使用存儲(chǔ)過程,而這些存儲(chǔ)過程作為包含未篩選的用戶輸入的字符串來傳遞丹禀,也會(huì)發(fā)生sql注入状勤。
sql注入可能導(dǎo)致攻擊者使用應(yīng)用程序登陸在數(shù)據(jù)庫中執(zhí)行命令。如果應(yīng)用程序使用特權(quán)過高的帳戶連接到數(shù)據(jù)庫双泪,這種問題會(huì)變得很嚴(yán)重持搜。在某些表單中,用戶輸入的內(nè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ù)庫查詢的代碼孩灯, 根據(jù)程序返回的結(jié)果闺金,獲得一些敏感的信息或者控制整個(gè)服務(wù)器,于是sql注入就發(fā)生了峰档。
如何防止SQL注入败匹?
永遠(yuǎn)不要信任用戶的輸入。對(duì)用戶的輸入進(jìn)行校驗(yàn)讥巡,可以通過正則表達(dá)式掀亩,或限制長度的方式進(jìn)行處理;然后對(duì)單引號(hào)和雙"-"等敏感符號(hào)進(jìn)行轉(zhuǎn)換等尚卫。
不要使用動(dòng)態(tài)拼裝sql归榕,可以使用參數(shù)化的sql或者直接使用存儲(chǔ)過程進(jìn)行數(shù)據(jù)查詢存取。
永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫連接吱涉,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫連接刹泄。
不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息怎爵。
應(yīng)用的異常信息應(yīng)該給出盡可能少的提示特石,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝。
最后想要了解更多關(guān)于web安全方面內(nèi)容的小伙伴鳖链,請(qǐng)關(guān)注小猿圈官網(wǎng)IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供更多開發(fā)環(huán)境搭建視頻等等姆蘸,希望在你自學(xué)web安全中幫助你指導(dǎo)方向,少走彎路芙委。