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

用PHP函數(shù)解決SQL injection

 更新時間:2006年12月09日 00:00:00   作者:  
SQL injection問題在ASP上可是鬧得沸沸揚揚當然還有不少國內(nèi)外著名的PHP程序“遇難”。至于SQL injection的詳情,網(wǎng)上的文章太多了,在此就不作介紹。
如果你網(wǎng)站空間的php.ini文件里的magic_quotes_gpc設(shè)成了off,那么PHP就不會在敏感字符前加上反斜杠(\),由于表單提交的內(nèi)容可能含有敏感字符,如單引號('),就導(dǎo)致了SQL injection的漏洞。在這種情況下,我們可以用addslashes()來解決問題,它會自動在敏感字符前添加反斜杠。
但是,上面的方法只適用于magic_quotes_gpc=Off的情況。作為一個開發(fā)者,你不知道每個用戶的magic_quotes_gpc是On還是Off,如果把全部的數(shù)據(jù)都用上addslashes(),那不是“濫殺無辜”了?假如magic_quotes_gpc=On,并且又用了addslashes()函數(shù),那讓我們來看看: 
復(fù)制代碼 代碼如下:
<?php 
//如果從表單提交一個變量$_POST['message'],內(nèi)容為 Tom's book 
//這此加入連接MySQL數(shù)據(jù)庫的代碼,自己寫吧 
//在$_POST['message']的敏感字符前加上反斜杠 
$_POST['message'] = addslashes($_POST['message']); 

//由于magic_quotes_gpc=On,所以又一次在敏感字符前加反斜杠 
$sql = "INSERT INTO msg_table VALUE('$_POST[message]');"; 

//發(fā)送請求,把內(nèi)容保存到數(shù)據(jù)庫內(nèi) 
$query = mysql_query($sql); 

//如果你再從數(shù)據(jù)庫內(nèi)提取這個記錄并輸出,就會看到 Tom\'s book 
?> 


這樣的話,在magic_quotes_gpc=On的環(huán)境里,所有輸入的單引號(')都會變成(\')……
其實我們可以用get_magic_quotes_gpc()函數(shù)輕易地解決這個問題。當magic_quotes_gpc=On時,該函數(shù)返回TRUE;當magic_quotes_gpc=Off時,返回FALSE。至此,肯定已經(jīng)有不少人意識到:問題已經(jīng)解決。請看代碼: 
復(fù)制代碼 代碼如下:
<?php 
//如果magic_quotes_gpc=Off,那就為提單提交的$_POST['message']里的敏感字符加反斜杠 
//magic_quotes_gpc=On的情況下,則不加 
if (!get_magic_quotes_gpc()) { 
$_POST['message'] = addslashes($_POST['message']); 
} else {} 
?> 

其實說到這里,問題已經(jīng)解決。下面再說一個小技巧。
有時表單提交的變量不止一個,可能有十幾個,幾十個。那么一次一次地復(fù)制/粘帖addslashes(),是否麻煩了一點?由于從表單或URL獲取的數(shù)據(jù)都是以數(shù)組形式出現(xiàn)的,如$_POST、$_GET)那就自定義一個可以“橫掃千軍”的函數(shù): 
復(fù)制代碼 代碼如下:
<?php 
function quotes($content) 

//如果magic_quotes_gpc=Off,那么就開始處理 
if (!get_magic_quotes_gpc()) { 
//判斷$content是否為數(shù)組 
if (is_array($content)) { 
//如果$content是數(shù)組,那么就處理它的每一個單無 
foreach ($content as $key=>$value) { 
$content[$key] = addslashes($value); 

} else { 
//如果$content不是數(shù)組,那么就僅處理一次 
addslashes($content); 

} else { 
//如果magic_quotes_gpc=On,那么就不處理 

//返回$content 
return $content; 

?> 

這個應(yīng)該還是有問題的吧,因為$_GET里面的數(shù)組的元素也還可能
是數(shù)組,所以還是要遞歸調(diào)用,這個vbb中有個function.php里面這
個函數(shù)用得比較全面

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

function quotes($content){
if (!get_magic_quotes_gpc()) {
if(is_array($content)) {
foreach ($content as $key=>$value){
$content[$key] = quotes($value);
}
} else{
addslashes($content);
}
}
return$content;
}

function unquotes($content){
if(get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach($content as $key=>$value) {
$content[$key] =unquotes($value);
}
} else{
stripslashes($content);
}
}
return$content;
}

相關(guān)文章

  • 最新的php 文件上傳模型,支持多文件上傳

    最新的php 文件上傳模型,支持多文件上傳

    為 MayFish 重新封裝的一個文件上傳類,支持多個文件同時上傳,設(shè)置允許的上傳文件類型和文件大小。
    2009-08-08
  • php簡單計算頁面加載時間的方法

    php簡單計算頁面加載時間的方法

    這篇文章主要介紹了php簡單計算頁面加載時間的方法,涉及php針對頁面加載時間的計算技巧,需要的朋友可以參考下
    2015-06-06
  • PHP中的閉包function()?use()?{}使用場景和技巧

    PHP中的閉包function()?use()?{}使用場景和技巧

    由于存在函數(shù)內(nèi)部不能訪問全局作用的,所以就需要一種可以引入上一級作用域的語法結(jié)構(gòu),可以通過use使用函數(shù)聲明時所在作用域的變量的值。php的閉包可能不常用,但是在某些場合之下還是可以考慮用php的閉包來實現(xiàn)某些功能的。
    2022-12-12
  • php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法

    php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法

    這篇文章主要介紹了php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法,涉及php查詢mysql及操作csv文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Ajax+PHP 邊學(xué)邊練之四 表單

    Ajax+PHP 邊學(xué)邊練之四 表單

    通過上一篇文章已經(jīng)了解到如何利用Ajax和PHP對數(shù)據(jù)庫進行數(shù)據(jù)讀取,這樣可以動態(tài)的獲取到數(shù)據(jù)庫的最新數(shù)據(jù)。本篇則繼續(xù)介紹通過表單(Form)向數(shù)據(jù)庫中寫入數(shù)據(jù)。
    2009-11-11
  • win10環(huán)境PHP 7 安裝配置【教程】

    win10環(huán)境PHP 7 安裝配置【教程】

    PHP,是英文超文本預(yù)處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,被廣泛地運用。
    2016-05-05
  • PHP實現(xiàn)獲取某個月份周次信息的方法

    PHP實現(xiàn)獲取某個月份周次信息的方法

    這篇文章主要介紹了PHP實現(xiàn)獲取某個月份周次信息的方法,涉及php針對日期與時間的相關(guān)計算技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • php5編程中的異常處理詳細方法介紹

    php5編程中的異常處理詳細方法介紹

    比較詳細的關(guān)于php5的異常處理方法,而且給出了,多種方法
    2008-07-07
  • PHP類的反射用法實例

    PHP類的反射用法實例

    這篇文章主要介紹了PHP類的反射用法,實例講述了反射類的常用操作,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • sphinx增量索引的一個問題

    sphinx增量索引的一個問題

    很早使用coreseek來實現(xiàn)對內(nèi)容的搜索,并使用主索引+增量索引來實現(xiàn)新發(fā)的內(nèi)容很快能搜索到,使用一直挺穩(wěn)定。
    2011-06-06

最新評論

香河县| 杨浦区| 蕉岭县| 勐海县| 凤庆县| 勐海县| 杭锦后旗| 银川市| 渝中区| 菏泽市| 海城市| 宣恩县| 青铜峡市| 庄河市| 特克斯县| 铜山县| 依安县| 鲁山县| 龙海市| 启东市| 调兵山市| 芮城县| 大城县| 尼玛县| 乡宁县| 海晏县| 西畴县| 仙居县| 宁强县| 汝南县| 玉山县| 江孜县| 普洱| 新竹县| 富平县| 大石桥市| 天祝| 龙海市| 肇庆市| 阿坝| 武穴市|