SQL注入詳解

SQL注入是一種常見的web攻擊方式,主要是利用后端程序的漏洞,主要針對的是數(shù)據(jù)(以傳統(tǒng)關(guān)系型數(shù)據(jù)為主)進(jìn)行攻擊座菠。攻擊者通過精心構(gòu)造的參數(shù)仪媒,繞過服務(wù)器的驗(yàn)證沉桌,來執(zhí)行惡意SQL語句,SQL注入會(huì)造成脫庫(原始數(shù)據(jù)會(huì)被攻擊者所獲取) 繞過權(quán)限驗(yàn)證算吩,串改留凭、惡意刪除數(shù)據(jù),數(shù)據(jù)往往是一個(gè)網(wǎng)站一個(gè)系統(tǒng)的生命線偎巢,一旦SQL漏洞被攻擊者利用通常會(huì)造成很嚴(yán)重的后果蔼夜,我們對于SQL注入的防范。這一點(diǎn)需要我們的開發(fā)者加倍重視压昼。下面是一個(gè)例子來演示SQL注入的過程求冷。對于一個(gè)登陸驗(yàn)證來說,需要用戶輸入用戶名和密碼進(jìn)行查詢驗(yàn)證窍霞。查詢的SQL語句如下所示:
SELECT * FROM USERS WHERE USERNAME= "$username" AND PASSWORD= "$password";
假定現(xiàn)在攻擊者已知該網(wǎng)站的一個(gè)用戶名:archer2018,那么攻擊者可以構(gòu)造密碼為:"anywords=" or 1=1 此時(shí)匠题,后端程序執(zhí)行的SQL語句為:
SELECT * FROM USERS WHERE USERNAME= "archer2018" AND PASSWORD= "anywords" or 1=1 ;
這樣的話,用戶無論輸入什么密碼都會(huì)繞過驗(yàn)證但金,如果更驗(yàn)證一些 構(gòu)造密碼為:“anywords” or 1=1 ;drop table users韭山,那么整個(gè)表都會(huì)被刪掉。執(zhí)行SQL語句如下所示:
SELECT * FROM USERS WHERE USERNAME= "archer2018" AND password = "anywords" OR 1=1;drop table users;
SQL注入的防范:
SQL注入發(fā)生的絕大多數(shù)情況都是直接使用用戶輸入?yún)?shù)拼接SQL語句造成的冷溃,防范SQL注入钱磅,主要的方式就是丟失避免直接使用用戶輸入的數(shù)據(jù),
1.使用預(yù)編譯語句似枕,(PreparedStatement),一方面可以加速SQL的執(zhí)行速度盖淡,防范SQL注入。(理解PreparedStatementf防范SQL注入的原理凿歼,首先要理解預(yù)編譯語句的原理褪迟,如下圖所示):


aa.png

SQL 語句的編譯過程,分為以下一個(gè)步驟:
(1).基本解析:包含SQL語句的語法毅往,語義解析牵咙,以及對應(yīng)的表和列是否真實(shí)存在、
(2).編譯:將SQL語句編譯成機(jī)器理解的中間代碼格式攀唯。
(3).查詢優(yōu)化:編譯器在所在的所有的執(zhí)行方案中選擇一個(gè)最優(yōu)的洁桌。
(4).執(zhí)行階段:執(zhí)行最終的查詢方案并且吧執(zhí)行的結(jié)果返回。
2.如果不可避免的要使用SQL拼裝侯嘀,可以對用戶輸入的數(shù)據(jù)進(jìn)行轉(zhuǎn)移另凌,尤其是多單雙引號的轉(zhuǎn)義谱轨。
3.可以對用戶輸入數(shù)據(jù)的表單進(jìn)行輸入限制校驗(yàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吠谢,一起剝皮案震驚了整個(gè)濱河市土童,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌工坊,老刑警劉巖献汗,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異王污,居然都是意外死亡罢吃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門昭齐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尿招,“玉大人,你說我怎么就攤上這事阱驾【兔眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵里覆,是天一觀的道長丧荐。 經(jīng)常有香客問我,道長喧枷,這世上最難降的妖魔是什么篮奄? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮割去,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昼丑。我一直安慰自己呻逆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布菩帝。 她就那樣靜靜地躺著咖城,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呼奢。 梳的紋絲不亂的頭發(fā)上宜雀,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音握础,去河邊找鬼辐董。 笑死,一個(gè)胖子當(dāng)著我的面吹牛禀综,可吹牛的內(nèi)容都是我干的简烘。 我是一名探鬼主播苔严,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼孤澎!你這毒婦竟也來了届氢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤覆旭,失蹤者是張志新(化名)和其女友劉穎退子,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體型将,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寂祥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茶敏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤靶。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惊搏,靈堂內(nèi)的尸體忽然破棺而出贮乳,到底是詐尸還是另有隱情,我是刑警寧澤恬惯,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布向拆,位于F島的核電站,受9級特大地震影響酪耳,放射性物質(zhì)發(fā)生泄漏浓恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一碗暗、第九天 我趴在偏房一處隱蔽的房頂上張望颈将。 院中可真熱鬧,春花似錦言疗、人聲如沸晴圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽死姚。三九已至,卻和暖如春勤篮,著一層夾襖步出監(jiān)牢的瞬間都毒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工碰缔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留账劲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像涤垫,于是被迫代替她去往敵國和親姑尺。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355