下代碼sql注入產(chǎn)生和加固_第1頁(yè)
下代碼sql注入產(chǎn)生和加固_第2頁(yè)
下代碼sql注入產(chǎn)生和加固_第3頁(yè)
下代碼sql注入產(chǎn)生和加固_第4頁(yè)
下代碼sql注入產(chǎn)生和加固_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件源代碼漏洞及缺陷掃描技術(shù)如何參考自動(dòng)化審核報(bào)告對(duì)源代碼進(jìn)行加固12Seay工具報(bào)告分析1PHP下代碼SQL注入產(chǎn)生和代碼加固2結(jié)束3456目錄56軟件源代碼漏洞及缺陷掃描技術(shù)PHP下代碼SQL注入產(chǎn)生和代碼加固SQL注入原理簡(jiǎn)介PHP中SQL注入產(chǎn)生PHP中SQL代碼加固3SQL注入原理簡(jiǎn)介SQL注入原理簡(jiǎn)介5點(diǎn)擊此處添加腳注信息 SQL注入,也就是SQLInjection:就是通過把SQL命令插入到Web表單遞交或輸入域名、頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。

通過SQL注入,可以獲取數(shù)據(jù)庫(kù)中的信息;可以數(shù)據(jù)庫(kù)中直接下載數(shù)據(jù),這也就是俗話說的“拖庫(kù)”;甚至可以獲取主機(jī)控制權(quán)。SQL注入原理簡(jiǎn)介6點(diǎn)擊此處添加腳注信息SQL注入原理簡(jiǎn)介7點(diǎn)擊此處添加腳注信息SQL注入原理簡(jiǎn)介8點(diǎn)擊此處添加腳注信息SELECTjob_id,job_desc,min_lvl,max_lvlFROMjobsWHEREjob_id=1SQL注入原理簡(jiǎn)介9點(diǎn)擊此處添加腳注信息SQL注入原理簡(jiǎn)介10點(diǎn)擊此處添加腳注信息SELECTjob_id,job_desc,min_lvl,max_lvlFROMjobsWHEREjob_id='1'OR'1'=1'SQL注入原理簡(jiǎn)介11點(diǎn)擊此處添加腳注信息SQL注入原理簡(jiǎn)介12點(diǎn)擊此處添加腳注信息SELECTjob_id,job_desc,min_lvl,max_lvlFROMjobsWHEREjob_id='1'or1=(selectcount(*)fromjob)--'SQL注入原理簡(jiǎn)介13點(diǎn)擊此處添加腳注信息防止SQL注入攻擊的方式主要注意以下幾點(diǎn):1.永遠(yuǎn)不要信任用戶的輸入,要對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過正則表達(dá)式,或限制長(zhǎng)度,對(duì)單引號(hào)和雙"-"進(jìn)行轉(zhuǎn)換等。2.永遠(yuǎn)不要使用動(dòng)態(tài)拼裝SQL,可以使用參數(shù)化的SQL或者直接使用存儲(chǔ)過程進(jìn)行數(shù)據(jù)查詢存取。3.永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫(kù)連接,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫(kù)連接。4.不要把機(jī)密信息明文存放,請(qǐng)加密或者h(yuǎn)ash掉密碼和敏感的信息。5.應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝,把異常信息存放在獨(dú)立的表中。SQL注入攻擊的總體思路

·發(fā)現(xiàn)SQL注入位置;

·判斷后臺(tái)數(shù)據(jù)庫(kù)類型;

·確定SHELL可執(zhí)行情況

·發(fā)現(xiàn)WEB虛擬目錄

·上傳木馬;

·得到管理員權(quán)限;PHP中SQL注入產(chǎn)生PHP中SQL注入產(chǎn)生16點(diǎn)擊此處添加腳注信息PHP中SQL代碼加固PHP中SQL代碼加固18點(diǎn)擊此處添加腳注信息 PDO擴(kuò)展為PHP訪問數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的、一致性的接口,它提供了一個(gè)數(shù)據(jù)訪問抽象層,這樣,無(wú)論使用什么數(shù)據(jù)庫(kù),都可以通過一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)。PDO隨PHP5.1發(fā)行,在PHP5.0的PECL擴(kuò)展中也可以使用,無(wú)法運(yùn)行于之前的PHP版本。PHP中SQL代碼加固19點(diǎn)擊此處添加腳注信息插入一條數(shù)據(jù)<?php$dsn="mysql:host=localhost;dbname=test";$db=newPDO($dsn,'root','');$count=$db->exec("INSERTINTOfooSETname='heiyeluren',gender=’男',time=NOW()");echo$count;$db=null;?>PHP中SQL代碼加固20點(diǎn)擊此處添加腳注信息Prepare方式<?php$query=$dbh->prepare("select*fromtable");if($query->execute()){ while($row=$query->fetch()){ print_r($row); }}?>PHP中SQL代碼加固21點(diǎn)擊此處添加腳注信息prepare參數(shù)化查詢<?php$query=$dbh->prepare("select*fromtablewhereid=?");if($query->execute(array(1000))){while($row=$query->fetch(PDO::FETCH_ASSOC)){ print_r($row); }}?>PHP中SQL代碼加固22點(diǎn)擊此處添加腳注信息這里參數(shù)有兩種表示方式:用?或作為命名參數(shù)的占位符"select*fromtablewhereid=:id“$query->execute(array(":id"=>"1000"))PHP中SQL代碼加固23點(diǎn)擊此處添加腳注信息 execute()方法中的input_parameters參數(shù)是可選的,雖然很方便,但是如果需要傳遞多個(gè)變量時(shí),以這種方式提供數(shù)組會(huì)很快變得難以處理(當(dāng)數(shù)組元素過多時(shí),也就是當(dāng)數(shù)據(jù)表中的列過多時(shí),代碼設(shè)計(jì)會(huì)變得特別難以閱讀或出錯(cuò))。使用bindParam()方法可以解決這個(gè)問題。語(yǔ)法格式如下booleanPDOStatement::bindParam(mixedparameter,mixed&variable[,intdatatype[,intlength[,mixeddriver_options]]])PHP中SQL代碼加固24點(diǎn)擊此處添加腳注信息以?為占位符時(shí),第一個(gè)參數(shù)為參數(shù)在數(shù)據(jù)庫(kù)表項(xiàng)中的索引,從0開始編號(hào)$query->bindParam(1,’1000’);以命名參數(shù)為占位符時(shí),第一個(gè)參數(shù)為命名參數(shù)$query->bindParam(‘:id’,’1000’);PHP中SQL代碼加固25點(diǎn)擊此處添加腳注信息$pdo=newPDO("mysql:host=192.168.0.1;dbname=test;","root");$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);PHP中SQL代碼加固26點(diǎn)擊此處添加腳注信息不能讓占位符?代替一組值,這樣只會(huì)獲取到這組數(shù)據(jù)的第一個(gè)值,如:select*fromtablewhereuseridin(?);如果要用in來(lái)查找,可以改用find_in_set()實(shí)現(xiàn)$ids='1,2,3,4,5,6';select*fromtablewherefind_in_set(userid,?);不能讓占位符代替數(shù)據(jù)表名或列名,如:select*fromtableorderby?;不能讓占位符?代替任何其他SQL語(yǔ)法,如:selectextract(?fromaddtime)asmytimefromtable;PHP中SQL代碼加固27點(diǎn)擊此處添加腳注信息PDO::lastInsertId()返回上次插入操作,主鍵列類型是自增的最后的自增IDPDOStatement::fetch()是用來(lái)獲取一條記錄PDOStatement::fetchAll()是獲取所有記錄集到一個(gè)集合PDOStatement::fetchColumn()是獲取結(jié)果指定第一條記錄的某個(gè)字段,缺省是第一個(gè)字段PDOStatement::rowCount():主要是用于PDO::que

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論