PHP魔術(shù)引號(hào)所帶來(lái)的安全問(wèn)題分析
PHP通過(guò)提取魔術(shù)引號(hào)產(chǎn)生的“\”字符會(huì)帶來(lái)一定的安全問(wèn)題,例如下面這段代碼片段:
// foo.php?xigr='ryat function daddslashes($string, $force = 0) { !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); if(!MAGIC_QUOTES_GPC || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = daddslashes($val, $force); } } else { $string = addslashes($string); } } return $string; } ... foreach(array('_COOKIE', '_POST', '_GET') as $_request) { foreach($$_request as $_key => $_value) { $_key{0} != '_' && $$_key = daddslashes($_value); } } echo $xigr['hi']; // echo \
上面的代碼原本期望得到一個(gè)經(jīng)過(guò)daddslashes()安全處理后的數(shù)組變量$xigr['hi'],但是沒(méi)有對(duì)變量$xigr做嚴(yán)格的類型規(guī)定,當(dāng)我們提交一個(gè)字符串變量$xigr='ryat,經(jīng)過(guò)上面的處理變?yōu)閈'ryat,到最后$xigr['hi']就會(huì)輸出\,如果這個(gè)變量引入到SQL語(yǔ)句,那么就會(huì)引起嚴(yán)重的安全問(wèn)題了,對(duì)此再來(lái)看下面的代碼片段:
... if($xigr) { foreach($xigr as $k => $v) { $uids[] = $v['uid']; } $query = $db->query("SELECT uid FROM users WHERE uid IN ('".implode("','", $uids)."')");
利用上面提到的思路,通過(guò)提交foo.php?xigr[]='&xigr[][uid]=evilcode這樣的構(gòu)造形式可以很容易的突破GPC或類似的安全處理,形成SQL注射漏洞!對(duì)此應(yīng)給與足夠的重視!
相關(guān)文章
關(guān)于PHP自動(dòng)判斷字符集并轉(zhuǎn)碼的詳解
本篇文章是對(duì)PHP自動(dòng)判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP下escape解碼函數(shù)的實(shí)現(xiàn)方法
很多時(shí)候需要用到j(luò)s的escape函數(shù)來(lái)轉(zhuǎn)換中文字符,可是用js轉(zhuǎn)換后的字符怎么用php來(lái)轉(zhuǎn)換回來(lái)呢,下面我就找到了兩個(gè)很實(shí)用的函數(shù)。2010-08-08PHP中使用foreach()遍歷二維數(shù)組的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇PHP中使用foreach()遍歷二維數(shù)組的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06PHP中實(shí)現(xiàn)漢字轉(zhuǎn)區(qū)位碼應(yīng)用源碼實(shí)例解析
PHP里如何實(shí)現(xiàn)漢字轉(zhuǎn)區(qū)位碼這個(gè)問(wèn)題一直困擾這大多程序員,那么下面這個(gè)源碼實(shí)例相信能給大家?guī)?lái)很大的幫助。2010-06-06PHP實(shí)現(xiàn)登錄搜狐廣告獲取廣告聯(lián)盟數(shù)據(jù)的方法【附demo源碼】
這篇文章主要介紹了PHP實(shí)現(xiàn)登錄搜狐廣告獲取廣告聯(lián)盟數(shù)據(jù)的方法,涉及php基于curl的遠(yuǎn)程數(shù)據(jù)操作相關(guān)技巧,需要的朋友可以參考下2016-10-10