PHP中magic quotes說明

特意查看了下手冊,關於php  magic quotes,常見的幾個設置以下,magic_quotes_gpc,magic_quotes_sybase,magic_quote_runtime,這幾個函數是在php.ini中去配置的,從手冊中能夠看出從php5.3後已經廢除了這些函數,因此強烈你們不要使用,在php.ini中關閉它。 php

php.ini中magic quotes設置

這些函數的做用是對數據進行轉義。防止sql注入的時候,不少人會這樣寫: html


  1. if(!get_magic_quotes_gpc()){
  2. $post=addslashes($post);
  3. }

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

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不受影響不會被轉義。 安全

magic_quotes_gpc教程

2.magic_quote_runtime 函數

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

magic_quote_runtime教程

3.magic_quotes_sybase spa

magic_quotes_sybase若是設置此選項開啓、在magic_quotes_gpc,magic_quotes_runtime開啓的狀況下單引號‘會被單引號’轉移而不是被反斜線\轉義。同時、此設置會徹底覆蓋magic_quotes_gpc的設置,即便magic_quotes_gpc被設置爲on,雙引號「、反斜線\和NUL's也不會被轉義。 htm

magic_quotes_sybase教程

歡迎轉載! 原文地址:  http://www.phpddt.com/php/php-magic-quotes.html ,轉載請註明地址,謝謝!
相關文章
相關標籤/搜索