亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁/技術文章
文章詳情頁

PHP安全之魔術引號——什么是魔術引號以及如何使用

瀏覽:10日期:2022-09-15 13:01:29

注:魔術引號特性已自 PHP 5.3.0 起廢棄并將自 PHP 5.4.0 起移除。

什么是魔術引號

當打開時,所有的?’(單引號),'(雙引號),(反斜線)和?NULL?字符都會被自動加上一個反斜線進行轉義。這和?addslashes()?作用完全相同。

一共有三個魔術引號指令:

magic_quotes_gpc?影響到?HTTP?請求數據(GET,POST 和 COOKIE)。不能在運行時改變。在?PHP?中默認值為?on。magic_quotes_runtime?如果打開的話,大部份從外部來源取得數據并返回的函數,包括從數據庫和文本文件,所返回的數據都會被反斜線轉義。該選項可在運行的時改變,在?PHP?中的默認值為?off。magic_quotes_sybase?如果打開的話,將會使用單引號對單引號進行轉義而非反斜線。此選項會完全覆蓋?magic_quotes_gpc。如果同時打開兩個選項的話,單引號將會被轉義成?’’。而雙引號、反斜線 和 NULL 字符將不會進行轉義。為什么要用魔術引號

注:本特性已自 PHP 5.3.0 起廢棄并將自 PHP 5.4.0 起移除。

沒有理由再使用魔術引號,因為它不再是?PHP?支持的一部分。 不過它幫助了新手在不知不覺中寫出了更好(更安全)的代碼。 但是在處理代碼的時候,最好是更改你的代碼而不是依賴于魔術引號的開啟。?為什么這個功能存在?是為了阻止SQL 注入。 在今天,開發者能夠更好得意識到了安全問題,并最終使用數據庫轉移機制或者 prepared 語句來取代魔術引號功能。為什么不用魔術引號

注:本特性已自 PHP 5.3.0 起廢棄并將自 PHP 5.4.0 起移除。

可移植性:編程時認為其打開或并閉都會影響到移植性??梢杂?get_magic_quotes_gpc()?來檢查是否打開,并據此編程。性能:由于并不是每一段被轉義的數據都要插入數據庫的,如果所有進入 PHP 的數據都被轉義的話,那么會對程序的執行效率產生一定的影響。在運行時調用轉義函數(如?addslashes())更有效率。?盡管?php.ini-dist?默認打開了這個選項,但是?php.ini-recommended?默認卻關閉了它,主要是出于性能的考慮。不便:由于不是所有數據都需要轉義,在不需要轉義的地方看到轉義的數據就很煩。比如說通過表單發送郵件,結果看到一大堆的 ’。針對這個問題,可以使用stripslashes()?函數處理。關閉魔術引號

magic_quotes_gpc?指令只能在系統級關閉,不能在運行時。也就是說不能用?ini_set()。

Example #1 在服務器端關閉魔術引號

下面是一個通過?php.ini?文件把這些選項設為?Off?的范例。

; Magic quotes;; Magic quotes for incoming GET/POST/Cookie data.magic_quotes_gpc = Off; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.magic_quotes_runtime = Off; Use Sybase-style magic quotes (escape ’ with ’’ instead of ’).magic_quotes_sybase = Off

如果不能修改服務器端的配置文件,使用?.htaccess?也可以。范例如下:

php_flag magic_quotes_gpc Off

為了能寫出移植性較強的代碼(可以運行于任何環境),例如不能修改服務器配置的情況,下面的例子可以在運行時關閉?magic_quotes_gpc。但是這樣做比較低效,適當的修改配置才是更好的辦法。

Example #2 在運行時關閉魔術引號

<?php if (get_magic_quotes_gpc()) {function stripslashes_deep($value){ $value = is_array($value) ? array_map(’stripslashes_deep’, $value) : stripslashes($value); return $value;}$_POST = array_map(’stripslashes_deep’, $_POST);$_GET = array_map(’stripslashes_deep’, $_GET);$_COOKIE = array_map(’stripslashes_deep’, $_COOKIE);$_REQUEST = array_map(’stripslashes_deep’, $_REQUEST); }?>

注:array_map()?返回一個數組,該數組包含了?arr1?中的所有單元經過?callback?作用過之后的單元。callback?接受的參數數目應該和傳遞給?array_map()?函數的數組數目一致。

標簽: PHP
相關文章:
主站蜘蛛池模板: 印度xxxxbbbb视频 | 亚洲综合国产一区在线 | 亚洲欧美一二三区 | 国产黄色在线观看 | 韩国xxxx色视频免费 | 8x永久免费观看成人影院 | 黄色一级片中国 | 国产伦精品一区二区三区视频金莲 | 久久99热这里只频精品6中文字幕 | 欧美黄色一级片视频 | 91小视频在线观看免费版高清 | 在线网站你懂得 | 国产l精品国产亚洲区在线观看 | 晚上睡不着偷偷看b站免费是视频 | 国产精品视频免费播放 | 国产成人午夜精品影院游乐网 | 欧美激情婷婷 | 精品一区二区三区的国产在线观看 | 免费看黄色片网站 | 亚洲一级特黄特黄的大片 | 亚洲精品国产男人的天堂 | 成人免费一级毛片在线播放视频 | 成人的天堂视频一区二区三区 | 久久久久99| 国产美女精品在线 | 日韩性黄色一级 | 国产淫视 | 欧美高清一级片 | 亚洲六月丁香六月婷婷蜜芽 | 久久久综合久久 | 亚洲国产网 | 亚洲在线a | 黄色在线视频观看 | 青草久操 | 乱一色一一区二区三区 | 午夜性视频播放免费视频 | 国产精品久久久久久久久久98 | 91视频免费网站 | 亚洲小视频在线观看 | 婷婷久久综合九色综合九七 | 热久久最新地址 |