最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年05月09日 15:36:36   作者:  
PHP防范SQL注入是一個非常重要的安全手段。相信大家對這一安全防范方法還不是很了解,希望通過本文介紹的內(nèi)容大家能夠充分掌握這一知識點

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

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

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

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

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

在新版本的PHP中,就算magic_quotes_gpc打開了,再使用addslashes()函數(shù),也不會有沖突,但是為了更好的實現(xiàn)版本兼容,建議在使用轉(zhuǎn)移函數(shù)前先檢測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)義掉”%”

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

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

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

PHP防范SQL注入的代碼

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

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

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

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

SQL代碼

復(fù)制代碼 代碼如下:

SELECT * FROM article WHERE articleid='$id'
SELECT * FROM article WHERE articleid=$id

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

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

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

相關(guān)文章

  • JWT登錄認(rèn)證實戰(zhàn)模擬過程全紀(jì)錄

    JWT登錄認(rèn)證實戰(zhàn)模擬過程全紀(jì)錄

    jwt是由用戶以用戶名、密碼登錄,服務(wù)端驗證后,會生成一個token,返回給客戶端,客戶端在下次訪問的過程中攜帶這個token,服務(wù)端責(zé)每次驗證這個token,下面這篇文章主要給大家介紹了關(guān)于JWT登錄認(rèn)證實戰(zhàn)模擬的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 使用PHP函數(shù)進行網(wǎng)站性能監(jiān)控和優(yōu)化的代碼示例

    使用PHP函數(shù)進行網(wǎng)站性能監(jiān)控和優(yōu)化的代碼示例

    在 PHP 中,有許多內(nèi)置函數(shù)和工具可以幫助我們實現(xiàn)網(wǎng)站的性能監(jiān)控和優(yōu)化,本文將介紹幾種常用的 PHP 函數(shù),并提供相應(yīng)的代碼示例,來幫助您更好地進行網(wǎng)站性能監(jiān)控和優(yōu)化,需要的朋友可以參考下
    2024-06-06
  • php中限制ip段訪問、禁止ip提交表單的代碼分享

    php中限制ip段訪問、禁止ip提交表單的代碼分享

    在項目應(yīng)用中,我們經(jīng)常需要用到限制ip段訪問或者限制IP提交表單等等ip相關(guān)的功能,今天我來分享下本人所使用的這塊代碼,希望對大家有所幫助
    2014-08-08
  • 基于php雙引號中訪問數(shù)組元素報錯的解決方法

    基于php雙引號中訪問數(shù)組元素報錯的解決方法

    下面小編就為大家分享一篇基于php雙引號中訪問數(shù)組元素報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • PHP5函數(shù)小全(分享)

    PHP5函數(shù)小全(分享)

    本篇文章是對PHP5函數(shù)進行了詳細(xì)的總結(jié)與分析,需要的朋友參考下
    2013-06-06
  • PHP 魔術(shù)函數(shù)使用說明

    PHP 魔術(shù)函數(shù)使用說明

    PHP魔術(shù)函數(shù)集錦,對于學(xué)習(xí)php的朋友可以參考下。
    2010-05-05
  • PHP求小于1000的所有水仙花數(shù)的代碼

    PHP求小于1000的所有水仙花數(shù)的代碼

    PHP求小于1000的所有水仙花數(shù)的代碼,需要的朋友可以參考下。
    2012-01-01
  • 作為PHP程序員你要知道的另外一種日志

    作為PHP程序員你要知道的另外一種日志

    這篇文章主要給大家介紹了關(guān)于作為PHP程序員要知道的另外一種日志的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧
    2018-07-07
  • PHP的博客ping服務(wù)代碼

    PHP的博客ping服務(wù)代碼

    今天發(fā)一下能夠直接用的ping函數(shù),希望對大家有所幫助,還需要說明的一點是現(xiàn)在的ping并不是像以前那么管用了
    2012-02-02
  • php函數(shù)與傳遞參數(shù)實例分析

    php函數(shù)與傳遞參數(shù)實例分析

    這篇文章主要介紹了php函數(shù)與傳遞參數(shù)的方法,以實例形式分析了函數(shù)按值傳遞的具體用法,具有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11

最新評論

贺兰县| 合肥市| 江华| 永定县| 中卫市| 凤山市| 怀化市| 丹江口市| 甘肃省| 常德市| 高青县| 双峰县| 渑池县| 通河县| 轮台县| 黄冈市| 泰顺县| 抚宁县| 黔江区| 怀集县| 南陵县| 南雄市| 天等县| 策勒县| 冕宁县| 桓仁| 长寿区| 红原县| 垣曲县| 瑞昌市| 平凉市| 甘洛县| 岑巩县| 东方市| 含山县| 安宁市| 秦安县| 商都县| 肇源县| 天水市| 临高县|