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