天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

一個優秀的php程序員除了要能順利的編寫代碼,還需要具備使程序處于安全環境下的能力。今天我們要向大家講解的是有關php防范SQL注入的相關方法。

說到網站安全就不得不提到SQL注入(SQL Injection),如果你用過ASP,對SQL注入一定有比較深的理解,php的安全性相對較高,這是因為MYSQL4以下的版本不支持子語句,而且當php.ini里的 magic_quotes_gpc 為On 時。

提交的變量中所有的 ' (單引號), " (雙引號), / (反斜線) and 空字符會自動轉為含有反斜線的轉義字符,給SQL注入帶來不少的麻煩。

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

a. 打開magic_quotes_gpc或使用addslashes()函數

在新版本的php中,就算magic_quotes_gpc打開了,再使用addslashes()函數,也不會有沖突,但是為了更好的實現版本兼容,建議在使用轉移函數前先檢測magic_quotes_gpc狀態,或者直接關掉,代碼如下:

php防范SQL注入的代碼

復制代碼 代碼如下:
// 去除轉義字符  
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 狀態  
if (@get_magic_quotes_gpc()) {  
$_GET = stripslashes_array($_GET);  
$_POST = stripslashes_array($_POST);  
$_COOKIE = stripslashes_array($_COOKIE);  
}

去除magic_quotes_gpc的轉義之后再使用addslashes函數,代碼如下:

php防范SQL注入的代碼

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

后兩個str_replace替換轉義目的是防止黑客轉換SQL編碼進行攻擊。

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

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

php防范SQL注入的代碼

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

當然,還有其他的變量類型,如果有必要的話盡量強制一下格式。

c. SQL語句中包含變量加引號

這一點兒很簡單,但也容易養成習慣,先來看看這兩條SQL語句:

SQL代碼

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

兩種寫法在各種程序中都很普遍,但安全性是不同的,第一句由于把變量$id放在一對單引號中,這樣使得我們所提交的變量都變成了字符串,即使包含了正確的SQL語句,也不會正常執行,而第二句不同,由于沒有把變量放進單引號中,那我們所提交的一切,只要包含空格,那空格后的變量都會作為SQL語句執行,因此,我們要養成給SQL語句中變量加引號的習慣。

d.URL偽靜態化

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

php技術PHP防范SQL注入的具體方法詳解(測試通過),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 狠狠色狠狠色88综合日日91 | 嫩草视频在线观看免费 | 日久精品不卡一区二区 | 中文字幕中文字幕永久免费 | 棉袜足j吐奶视频 | 国产爱豆剧果冻传媒在线 | 亚洲成色WWW久久网站夜月 | 色戒在线完整观看在线播放版 | 无限资源在线观看播放 | 99国内偷揿国产精品人妻 | 色噜噜狠狠色综合欧洲 | 91免费网站在线看入口黄 | 国产一区二区不卡老阿姨 | 晚夜免费禁用十大亏亏 | 含羞草影院AE在线观看 | 暖暖视频 免费 高清 日本8 | 午夜在线视频国产极品片 | 美国特级成人毛片 | 小p孩玩成年女性啪啪资源 小777论坛 | 日本人吃奶玩奶虐乳 | 国产精品99久久久久久AV | 久久综合中文字幕佐佐木希 | 男生脱美女内裤内衣动态图 | 亚洲欧美日韩高清专区 | 父皇轻点插好疼H限 | 欧美成人免费观看久久 | av亚洲2017色天堂 | jizz破处| 国家产午夜精品无人区 | 调教椅上的调教SM总裁被调教 | 日本午夜精品理论片A级APP发布 | 婷婷久久综合九色综合伊人色 | 久久是热这里只有精品 | 在线高清无码欧美久章草 | 97视频久久| 电影内射视频免费观看 | 老师的蕾丝小内内湿透了 | 寂寞少妇直播 | 在线中文字幕亚洲日韩 | 国产精品人妻久久无码不卡 | 我在厨房摸岳的乳HD在线观看 |