一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP防范SQL注入的具體方法詳解(測(cè)試通過(guò))

一個(gè)優(yōu)秀的php程序員除了要能順利的編寫(xiě)代碼,還需要具備使程序處于安全環(huán)境下的能力。今天我們要向大家講解的是有關(guān)php防范SQL注入的相關(guān)方法。

說(shuō)到網(wǎng)站安全就不得不提到SQL注入(SQL Injection),如果你用過(guò)ASP,對(duì)SQL注入一定有比較深的理解,php的安全性相對(duì)較高,這是因?yàn)镸YSQL4以下的版本不支持子語(yǔ)句,而且當(dāng)php.ini里的 magic_quotes_gpc 為On 時(shí)。

提交的變量中所有的 ' (單引號(hào)), " (雙引號(hào)), / (反斜線) and 空字符會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的轉(zhuǎn)義字符,給SQL注入帶來(lái)不少的麻煩。

請(qǐng)看清楚:“麻煩”而已~這并不意味著php防范SQL注入,書(shū)中就講到了利用改變注入語(yǔ)句的編碼來(lái)繞過(guò)轉(zhuǎn)義的方法,比如將SQL語(yǔ)句轉(zhuǎn)成ASCII編碼(類似:char(100,58,92,108,111,99,97,108,104,111,115,116…)這樣的格式),或者轉(zhuǎn)成16進(jìn)制編碼,甚至還有其他形式的編碼,這樣以來(lái),轉(zhuǎn)義過(guò)濾便被繞過(guò)去了,那么怎樣防范呢:

a. 打開(kāi)magic_quotes_gpc或使用addslashes()函數(shù)

在新版本的php中,就算magic_quotes_gpc打開(kāi)了,再使用addslashes()函數(shù),也不會(huì)有沖突,但是為了更好的實(shí)現(xiàn)版本兼容,建議在使用轉(zhuǎn)移函數(shù)前先檢測(cè)magic_quotes_gpc狀態(tài),或者直接關(guān)掉,代碼如下:

php防范SQL注入的代碼

復(fù)制代碼 代碼如下:
// 去除轉(zhuǎn)義字符  
function stripslashes_array($array) {  
if (is_array($array)) {  
foreach ($array as $k => $v) {  
$array[$k] = stripslashes_array($v);  
}  
} else if (is_string($array)) {  
$array = stripslashes($array);  
}  
return $array;  
}  
@set_magic_quotes_runtime(0);  
// 判斷 magic_quotes_gpc 狀態(tài)  
if (@get_magic_quotes_gpc()) {  
$_GET = stripslashes_array($_GET);  
$_POST = stripslashes_array($_POST);  
$_COOKIE = stripslashes_array($_COOKIE);  
}

去除magic_quotes_gpc的轉(zhuǎn)義之后再使用addslashes函數(shù),代碼如下:

php防范SQL注入的代碼

復(fù)制代碼 代碼如下:
$keywords = addslashes($keywords);
$keywords = str_replace("_","/_",$keywords);//轉(zhuǎn)義掉”_”
$keywords = str_replace("%","/%",$keywords);//轉(zhuǎn)義掉”%”

后兩個(gè)str_replace替換轉(zhuǎn)義目的是防止黑客轉(zhuǎn)換SQL編碼進(jìn)行攻擊。

b. 強(qiáng)制字符格式(類型)

在很多時(shí)候我們要用到類似xxx.php?id=xxx這樣的URL,一般來(lái)說(shuō)$id都是整型變量,為了防范攻擊者把$id篡改成攻擊語(yǔ)句,我們要盡量強(qiáng)制變量,代碼如下:

php防范SQL注入的代碼

$id=intval($_GET['id']);

當(dāng)然,還有其他的變量類型,如果有必要的話盡量強(qiáng)制一下格式。

c. SQL語(yǔ)句中包含變量加引號(hào)

這一點(diǎn)兒很簡(jiǎn)單,但也容易養(yǎng)成習(xí)慣,先來(lái)看看這兩條SQL語(yǔ)句:

SQL代碼

復(fù)制代碼 代碼如下:
SELECT * FROM article WHERE articleid='$id'
SELECT * FROM article WHERE articleid=$id

兩種寫(xiě)法在各種程序中都很普遍,但安全性是不同的,第一句由于把變量$id放在一對(duì)單引號(hào)中,這樣使得我們所提交的變量都變成了字符串,即使包含了正確的SQL語(yǔ)句,也不會(huì)正常執(zhí)行,而第二句不同,由于沒(méi)有把變量放進(jìn)單引號(hào)中,那我們所提交的一切,只要包含空格,那空格后的變量都會(huì)作為SQL語(yǔ)句執(zhí)行,因此,我們要養(yǎng)成給SQL語(yǔ)句中變量加引號(hào)的習(xí)慣。

d.URL偽靜態(tài)化

URL偽靜態(tài)化也就是URL重寫(xiě)技術(shù),像Discuz!一樣,將所有的URL都rewrite成類似xxx-xxx-x.html格式,既有利于SEO,又達(dá)到了一定的安全性,也不失為一個(gè)好辦法。但要想實(shí)現(xiàn)php防范SQL注入,前提是你得有一定的“正則”基礎(chǔ)。

php技術(shù)PHP防范SQL注入的具體方法詳解(測(cè)試通過(guò)),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品视频一区二区三区 | 国产亚洲一区二区三区在线 | 激情视频网站 | 免费观看一区二区 | 色视在线| 91精品视频免费观看 | 99热国产精品 | 久久精品94精品久久精品 | 四虎影视在线影院4hutv | 爱丝福利视频 | 国产成人福利免费视频 | 欧美成人日韩 | 国产一区二区三区在线 | 狠狠色丁香久久综合五月 | 天天色天天综合 | 激情图片激情文学 | 99精品国产兔费观看66 | 美女下面网站 | 伊人久久大香线蕉资源 | 亚洲国产精品日韩一线满 | 天天躁日日躁狠狠躁中文字幕老牛 | 九九视频这里只有精品 | 爱啪精品导航在线 | 国产小视频国产精品 | 欧美福利网站 | 五月婷婷亚洲 | 久久久91精品国产一区二区 | 欧美特黄三级在线观看 | 久久毛片久久毛 | 久久91综合国产91久久精品 | 国产亚洲欧洲精品 | 2020国产精品永久在线观看 | 精品一二三区 | 亚洲一区中文字幕在线 | 欧美日韩一区二区亚洲 | 2021国产精品自拍 | 激情综合五月网 | 在线播放国产精品 | 亚洲日本一区二区三区高清在线 | 在线亚洲小视频 | 亚洲午夜18|