深入PHP magic quotes的詳解
特地查看了下手冊(cè),關(guān)于php magic quotes,常見(jiàn)的幾個(gè)設(shè)置如下,magic_quotes_gpc,magic_quotes_sybase,magic_quote_runtime,這幾個(gè)函數(shù)是在php.ini中去配置的,從手冊(cè)中可以看出從php5.3后已經(jīng)廢除了這些特性,所以強(qiáng)烈大家不要使用,在php.ini中關(guān)閉它。
這些函數(shù)的作用是對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)義。防止sql注入的時(shí)候,很多人會(huì)這樣寫(xiě):
if(!get_magic_quotes_gpc()){
$post=addslashes($post);
}
如果開(kāi)啟了它們,會(huì)自動(dòng)給你轉(zhuǎn)義單引號(hào)(')、雙引號(hào)(")、反斜線(xiàn)(\)與 NUL(null字符),其實(shí)就相當(dāng)于調(diào)用addslashes函數(shù)。你可能會(huì)說(shuō)這樣不是很好嘛,安全性更高了,但是,你考慮代碼移植性了嗎?另外,對(duì)于上所有g(shù)pc($_GET,$_POST,$_COOKIE)的數(shù)據(jù)你都進(jìn)行轉(zhuǎn)義是否有必要?開(kāi)銷(xiāo)有多大?下面PHP點(diǎn)點(diǎn)通(phpddt.com)就對(duì)手冊(cè)中關(guān)于Magic Quotes的詳細(xì)說(shuō)明:
1.magic_quotes_gpc
magic_quotes_gpc這個(gè)是用來(lái)設(shè)置GPC($_GET、$_POST、$_COOKIE)的魔術(shù)引用狀態(tài)(在PHP4中也包含$_ENV)。當(dāng)開(kāi)啟時(shí),所有的單引號(hào)(single-quote),雙引號(hào)(double quote),反斜線(xiàn)(backslash)和NUL's會(huì)被反斜線(xiàn)自動(dòng)轉(zhuǎn)義。當(dāng)開(kāi)啟magic_quote_sybase為on時(shí),只有單引號(hào)(singgle-quote)會(huì)被單引號(hào)轉(zhuǎn)義為'',雙引號(hào)、反斜線(xiàn)(backslash)和NUL's不受影響不會(huì)被轉(zhuǎn)義。
2.magic_quote_runtime
magic_quote_runtime如果開(kāi)啟該選項(xiàng),許多返回外部數(shù)據(jù)(數(shù)據(jù)庫(kù)、文本)的函數(shù)將會(huì)被反斜線(xiàn)(backslash)轉(zhuǎn)義。如果也開(kāi)啟magic_quote_sybase,則只有單引號(hào)(single-quote)會(huì)被單引號(hào)轉(zhuǎn)義。
3.magic_quotes_sybase
magic_quotes_sybase如果設(shè)置此選項(xiàng)開(kāi)啟、在magic_quotes_gpc,magic_quotes_runtime開(kāi)啟的情況下單引號(hào)‘會(huì)被單引號(hào)'轉(zhuǎn)移而不是被反斜線(xiàn)\轉(zhuǎn)義。同時(shí)、此設(shè)置會(huì)完全覆蓋magic_quotes_gpc的設(shè)置,即使magic_quotes_gpc被設(shè)置為on,雙引號(hào)“、反斜線(xiàn)\和NUL's也不會(huì)被轉(zhuǎn)義。
相關(guān)文章
php生成xml時(shí)添加CDATA標(biāo)簽的方法
這篇文章主要介紹了php生成xml時(shí)添加CDATA標(biāo)簽的方法,實(shí)例講述了php操作XML文件的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10php微信開(kāi)發(fā)之自定義菜單實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了php微信開(kāi)發(fā)之自定義菜單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11PHP執(zhí)行Curl時(shí)報(bào)錯(cuò)提示CURL ERROR: Recv failure: Connection reset by
這篇文章主要介紹了PHP執(zhí)行Curl時(shí)報(bào)錯(cuò)提示CURL ERROR: Recv failure: Connection reset by peer的解決方法,需要的朋友可以參考下2014-06-06php數(shù)字每三位加逗號(hào)的功能函數(shù)
這篇文章主要介紹了php數(shù)字每三位加逗號(hào)的功能函數(shù),想知道如何做到數(shù)字每三位加逗號(hào)的朋友可以參考下2015-10-10php查詢(xún)mysql大量數(shù)據(jù)造成內(nèi)存不足的解決方法
這篇文章主要介紹了php查詢(xún)mysql大量數(shù)據(jù)造成內(nèi)存不足的解決方法,實(shí)例分析了mysql查詢(xún)時(shí)內(nèi)存不足的原因與相應(yīng)的解決方法,并且較為詳細(xì)的分析了mysql_unbuffered_query函數(shù)的使用技巧,需要的朋友可以參考下2015-03-03解析PHP函數(shù)array_flip()在重復(fù)數(shù)組元素刪除中的作用
本篇文章是對(duì)PHP函數(shù)array_flip()在重復(fù)數(shù)組元素刪除中的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06采用PHP函數(shù)memory_get_usage獲取PHP內(nèi)存清耗量的方法
PHP性能優(yōu)化過(guò)程中需要獲取PHP內(nèi)存消耗,使用memory_get_usage()函數(shù)可獲取當(dāng)前的內(nèi)存消耗情況,函數(shù)使用簡(jiǎn)單,這里討論一下memory_get_usage()函數(shù)的用法與實(shí)例2011-12-12