版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Web應(yīng)用系統(tǒng)安全開發(fā)
S
Q
L
注入漏洞與安全防護(hù)5.4.1
SQL注入漏洞的威脅?SQL注入的概念SQL注入(SQL
Injection)是一種常見的網(wǎng)絡(luò)安全攻擊技術(shù),它利用輸入驗(yàn)證不充分的漏洞,將惡意的SQL代碼插入到應(yīng)用程序的數(shù)據(jù)庫執(zhí)行中。通過成功執(zhí)行這些惡意SQL代碼,攻擊者可以繞過身份驗(yàn)證、獲取未授權(quán)的訪問權(quán)限、篡改數(shù)據(jù)庫內(nèi)容甚至控制整個(gè)應(yīng)用程序。1.
SQL
注入的方式1.
SQL
注入的方式?SQL注入的方式(1)惡意拼接SQL語句可以查詢、插入、更新和刪除數(shù)據(jù),且使用分號來分隔不同的命令。例如:SELECT*FROM
users
WHERE
user_id=$user_id;其中,user_id是傳入的參數(shù),如果傳入的參數(shù)值為“1234;DELETE
FROM
users”,那么最終的查詢語句會變?yōu)椋篠ELECT*FROM
users
WHERE
user_id=1234;DELETEFROMusers;如果以上語句執(zhí)行,則會刪除users表中的所有數(shù)據(jù)。1.
SQL
注入的方式(2)傳入非法參數(shù)SQL語句中傳入的字符串參數(shù)是用單引號引起來的,如果字符串本身包含單引號而沒有被處理,那么可能會篡改原本SQL語句的作用。例如:SELECT*FROM
user_nameWHEREuser_name=$user_name;如果user_name傳入?yún)?shù)值為G'chen,那么最終的查詢語句會變?yōu)椋篠ELECT*FROM
user_name
WHERE
user_name='G'chen';一般情況下,以上語句會執(zhí)行出錯(cuò),這樣的語句風(fēng)險(xiǎn)比較小。雖然沒有語法錯(cuò)誤,但可能會惡意產(chǎn)生SQL語句,并且以一種你不期望的方式運(yùn)行。1.
SQL
注入的方式(3)添加額外條件在SQL語句中添加一些額外條件,以此來改變執(zhí)行行為。條件一般為真值表達(dá)式。例如:UPDATEusersSETuserpass='$userpass'WHERE
user_id=$user_id;如果user_id被傳入惡意的字符串“1234OR
TRUE”,那么最終的SQL語句會變?yōu)椋篣PDATEusersSETuserpass='123456'WHERE
user_id=1234OR
TRUE;這將更改所有用戶的密碼。2.
SQL注入的威脅(1)數(shù)據(jù)泄露:攻擊者可以通過注入惡意SQL代碼來訪問和檢索敏感的數(shù)據(jù)庫信息,如用戶憑據(jù)、個(gè)人身份信息、財(cái)務(wù)數(shù)據(jù)等。這種數(shù)據(jù)泄露可能導(dǎo)致隱私問題、身份盜竊和金融損失。(2)身份驗(yàn)證繞過:通過惡意構(gòu)造的SQL查詢,攻擊者可以繞過應(yīng)用程序的身份驗(yàn)證機(jī)制。這可能使攻擊者能夠以其他用戶的身份登錄,獲得未授權(quán)的訪問權(quán)限,并執(zhí)行未經(jīng)授權(quán)的操作。(3)數(shù)據(jù)篡改:通過注入惡意SQL代碼,攻擊者可以修改數(shù)據(jù)庫中的數(shù)據(jù),包括插入、更新或刪除記錄。這可能導(dǎo)致數(shù)據(jù)一致性問題、信息損壞,甚至系統(tǒng)功能故障。(4)完全控制:在某些情況下,成功的SQL注入攻擊可能使攻擊者能夠完全控制受影響的應(yīng)用程序和數(shù)據(jù)庫服務(wù)器。攻擊者可以執(zhí)行任意的SQL查詢,操縱數(shù)據(jù)、創(chuàng)建惡意賬戶、安裝后門等,從而對系統(tǒng)進(jìn)行完全的入侵和控制。(5)拒絕服務(wù)(DoS):攻擊者可以利用SQL注入漏洞來執(zhí)行資源密集型查詢,導(dǎo)致數(shù)據(jù)庫服務(wù)器過載,從而使應(yīng)用程序無法正常運(yùn)行或響應(yīng)其他用戶的請求。實(shí)例5-85.4.2
SQL注入漏洞的防護(hù)?PDO(PHP數(shù)據(jù)對象)是一種在PHP中操作數(shù)據(jù)庫的常用方法。參數(shù)綁定是一種在執(zhí)行SQL查詢時(shí),將變量綁定到查詢中的占位符的技術(shù)。使用參數(shù)綁定可以提高安全性,防止SQL注入攻擊,并簡化代碼編寫。<?php//(1)編寫包含占位符的SQL查詢語句,占位符使用冒號(:)或問號(?)表示$sql="SELECT*FROM
users
WHERE
username=:username";//(2)使用PDO預(yù)處理語句來準(zhǔn)備查詢$stmt=$pdo->prepare($sql);//(3)使用bindParam()方法將變量綁定到占位符$stmt->bindParam(':username',$username);//(4)在綁定完所有參數(shù)后,通過execute()方法執(zhí)行查詢$stmt->execute();?>1.
PDO參數(shù)綁定2.
函數(shù)轉(zhuǎn)義?雖然大部分情況下都可以通過底層DB類封裝好的方法來操作數(shù)據(jù)庫,比如常見的連貫操作,可是依然會有一部分操作底層是很難滿足的,所以依然會存在少部分裸寫SQL的情況,這個(gè)時(shí)候就得使用函數(shù)轉(zhuǎn)義來保障SQL語句的結(jié)構(gòu)不被改變,常見的轉(zhuǎn)義函數(shù)是:(1)intval()函數(shù)當(dāng)你可以明確參數(shù)的類型時(shí),可以使用intval()轉(zhuǎn)義函數(shù)把接收的參數(shù)轉(zhuǎn)換一下類型,防止參數(shù)中出現(xiàn)一些非法的SQL語句。比如,要接收一個(gè)學(xué)生ID號,可以使用:$studentID=intval($_GET['student_ID']);(2)addslashes()函數(shù)addslashes()函數(shù)可以通過反斜杠轉(zhuǎn)義所有的單引號、雙引號、反斜杠,試想一下,SQL語句如下:
$id=addslashes($id);$sql="SELECT*FROM
user
WHERE
id='$id'";3.
參數(shù)規(guī)則驗(yàn)證(1)檢查用戶輸入的合法性,確認(rèn)輸入的內(nèi)容只包含合法的數(shù)據(jù)。(2)限制表單或查詢字符串輸入的長度。(3)檢查提取數(shù)據(jù)的查詢所返回的記錄數(shù)量。4.
屏蔽錯(cuò)誤消息防范SQL注入還要避免出現(xiàn)一些詳細(xì)的錯(cuò)誤消息,因?yàn)楣粽呖梢岳眠@些消息。要使用一種標(biāo)準(zhǔn)的輸入確認(rèn)機(jī)制來驗(yàn)證所有輸入數(shù)據(jù)的長度、類型、語句、企業(yè)規(guī)則等,例如下述語句:<?php@$conn=mysqli_connect("localhost","root","")ordie("errorconnecting");?>連接數(shù)據(jù)庫的時(shí)候,可以在行首加上一個(gè)@符號,就可以屏蔽錯(cuò)誤信息輸出。5.
權(quán)限控制?對于用來執(zhí)行查詢的數(shù)據(jù)庫賬戶,限制其權(quán)限
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廈門演藝職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案解析
- 2025年青海省海南藏族自治州單招職業(yè)適應(yīng)性測試題庫附答案解析
- 2025年新邵縣招教考試備考題庫附答案解析(必刷)
- 2025年湖北工業(yè)大學(xué)工程技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析
- 2026年武漢民政職業(yè)學(xué)院單招綜合素質(zhì)考試題庫帶答案解析
- 2025年南陽職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案解析
- 2025年邯鄲科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案解析
- 2026年六安職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷帶答案解析
- 2024年滇池學(xué)院馬克思主義基本原理概論期末考試題帶答案解析(奪冠)
- 2025年陜西工運(yùn)學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 信息化培訓(xùn)考核管理制度
- 體育培訓(xùn)教練員制度
- 縣醫(yī)院醫(yī)?;鸸芾碇贫?3篇)
- 建筑鋼結(jié)構(gòu)防火技術(shù)規(guī)范
- 護(hù)坡施工方案審查(3篇)
- 2026年化工廠的工作計(jì)劃
- 便道移交協(xié)議書
- 嬰幼兒照護(hù)者健康素養(yǎng)的社區(qū)干預(yù)方案
- T-CESA《冷板式液冷整機(jī)柜服務(wù)器技術(shù)規(guī)范》
- 2025年普通混凝土試題及答案
- 職務(wù)犯罪案件培訓(xùn)課件
評論
0/150
提交評論