深入PHP magic quotes的詳解_php技巧

來源:互聯網
上載者:User

特地查看了下手冊,關於php  magic quotes,常見的幾個設定如下,magic_quotes_gpc,magic_quotes_sybase,magic_quote_runtime,這幾個函數是在php.ini中去配置的,從手冊中可以看出從php5.3後已經廢除了這些特性,所以強烈大家不要使用,在php.ini中關閉它。

php.ini中magic quotes設定

這些函數的作用是對資料進行轉義。防止sql注入的時候,很多人會這樣寫:

複製代碼 代碼如下:

if(!get_magic_quotes_gpc()){
$post=addslashes($post);
}

如果開啟了它們,會自動給你轉義單引號(')、雙引號(")、反斜線(\)與 NUL(null字元),其實就相當於調用addslashes函數。你可能會說這樣不是很好嘛,安全性更高了,但是,你考慮代碼移植性了嗎?另外,對於上所有gpc($_GET,$_POST,$_COOKIE)的資料你都進行轉義是否有必要?開銷有多大?下面PHP點點通(phpddt.com)就對手冊中關於Magic Quotes的詳細說明:

1.magic_quotes_gpc

magic_quotes_gpc這個是用來設定GPC($_GET、$_POST、$_COOKIE)的魔術引用狀態(在PHP4中也包含$_ENV)。當開啟時,所有的單引號(single-quote),雙引號(double quote),反斜線(backslash)和NUL's會被反斜線自動轉義。當開啟magic_quote_sybase為on時,只有單引號(singgle-quote)會被單引號轉義為'',雙引號、反斜線(backslash)和NUL's不受影響不會被轉義。

2.magic_quote_runtime

magic_quote_runtime如果開啟該選項,許多返回外部資料(資料庫、文本)的函數將會被反斜線(backslash)轉義。如果也開啟magic_quote_sybase,則只有單引號(single-quote)會被單引號轉義。

3.magic_quotes_sybase

magic_quotes_sybase如果設定此選項開啟、在magic_quotes_gpc,magic_quotes_runtime開啟的情況下單引號‘會被單引號'轉移而不是被反斜線\轉義。同時、此設定會完全覆蓋magic_quotes_gpc的設定,即使magic_quotes_gpc被設定為on,雙引號“、反斜線\和NUL's也不會被轉義。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.