PHP+mysql防止SQL注入的方法小結(jié)_第1頁
PHP+mysql防止SQL注入的方法小結(jié)_第2頁
PHP+mysql防止SQL注入的方法小結(jié)_第3頁
PHP+mysql防止SQL注入的方法小結(jié)_第4頁
PHP+mysql防止SQL注入的方法小結(jié)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

第PHP+mysql防止SQL注入的方法小結(jié)本文實(shí)例講述了PHP+mysql防止SQL注入的方法。分享給大家供大家參考,具體如下:

SQL注入

例:腳本邏輯

$sql="SELECT*FROMuserWHEREuserid=$_GET[userid]";

案例1:

復(fù)制代碼代碼如下:SELECT*FROMtWHEREaLIKE'%xxx%'OR(IF(NOW=SYSDATE(),SLEEP(5),1))ORbLIKE'1=1';

案例2:

復(fù)制代碼代碼如下:SELECT*FROMtWHEREa0ANDbIN(497AND(SELECT*FROM(SELECT(SLEEP(20)))a));

案例3:

復(fù)制代碼代碼如下:SELECT*FROMtWHEREa=1andbin(1234,(SELECT(CASEWHEN(5=5)THENSLEEP(5)ELSE5*(SELECT5FROMINFORMATION_SCHEMA.CHARACTER_SETS)END)));

監(jiān)控以下方法

SLEEP()—一般的SQL盲注都會(huì)伴隨SLEEP()函數(shù)出現(xiàn),而且一般至少SLEEP5秒以上

MID()

CHAR()

ORD()

SYSDATE()

SUBSTRING()

DATABASES()

SCHEMA()

USER()

VERSION()

CURRENT_USER()

LOAD_FILE()

OUTFILE/DUMPFILE

INFORMATION_SCHEMA

TABLE_NAME

fwrite()/fopen()/file_get_contents()—這幾個(gè)是PHP文件操作函數(shù)

應(yīng)對(duì)方法:

1.mysql_escape_string()轉(zhuǎn)義特殊字符((PHP4=4.3.0,PHP5))(mysql_real_escape_string必須先鏈接上數(shù)據(jù)庫,否則會(huì)報(bào)錯(cuò))

下列字符受影響:

\x00//對(duì)應(yīng)于ascii字符的NULL

\n//換行符且回到下一行的最前端

\r//換行符

\//轉(zhuǎn)義符

'

"

\x1a//16進(jìn)制數(shù)

如果成功,則該函數(shù)返回被轉(zhuǎn)義的字符串。如果失敗,則返回false。

2.addslashes():函數(shù)返回在預(yù)定義字符之前添加反斜杠的字符串(stripslashes()實(shí)現(xiàn)字符串還原)

預(yù)定義的字符有:

單引號(hào)(')

雙引號(hào)(")

反斜杠(\)

NULL

3.preparedstatements(預(yù)處理機(jī)制)

$mysqli=newmysqli("","user","password","database");

if($mysqli-connect_errno){

echo"FailedtoconnecttoMySQL:(".$mysqli-connect_errno.")".$mysqli-connect_error;

/*Non-preparedstatement*/

if(!$mysqli-query("DROPTABLEIFEXISTStest")||!$mysqli-query("CREATETABLEtest(idINT)")){

echo"Tablecreationfailed:(".$mysqli-errno.")".$mysqli-error;

/*Preparedstatement,stage1:prepare*/

if(!($stmt=$mysqli-prepare("INSERTINTOtest(id)VALUES()"))){

echo"Preparefailed:(".$mysqli-errno.")".$mysqli-error;

/*Preparedstatement,stage2:bindandexecute*/

$id=1;

if(!$stmt-bind_param("i",$id)){

echo"Bindingparametersfailed:(".$stmt-errno.")

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論