最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP防止注入攻擊實(shí)例分析

 更新時(shí)間:2014年11月03日 14:59:49   投稿:shichen2014  
這篇文章主要介紹了PHP防止注入攻擊的具體方法,實(shí)例分析了相關(guān)的字符串函數(shù)與特殊字符處理,需要的朋友可以參考下

本文以實(shí)例形式詳細(xì)分析了PHP防止注入攻擊的方法。分享給大家供大家參考。具體分析如下:

PHP addslashes() 函數(shù)--單撇號(hào)加斜線轉(zhuǎn)義

PHP String 函數(shù)

定義和用法

addslashes() 函數(shù)在指定的預(yù)定義字符前添加反斜杠。
這些預(yù)定義字符是:
 單引號(hào) (')
 雙引號(hào) (")
 反斜杠 (\)
 NULL
語(yǔ)法:

addslashes(string)

參數(shù)  描述
string 必需。規(guī)定要檢查的字符串。

提示和注釋

提示:該函數(shù)可用于為存儲(chǔ)在數(shù)據(jù)庫(kù)中的字符串以及數(shù)據(jù)庫(kù)查詢語(yǔ)句準(zhǔn)備合適的字符串。
注釋:默認(rèn)情況下,PHP 指令 magic_quotes_gpc 為 on,對(duì)所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes()。不要對(duì)已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過(guò)的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義。遇到這種情況時(shí)可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測(cè)。

例子

在本例中,我們要向字符串中的預(yù)定義字符添加反斜杠:

復(fù)制代碼 代碼如下:
<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>

輸出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.

get_magic_quotes_gpc函數(shù)

復(fù)制代碼 代碼如下:
function html($str)
{
     $str = get_magic_quotes_gpc()?$str:addslashes($str);
     return $str;
}

get_magic_quotes_gpc:
取得 PHP 環(huán)境變數(shù) magic_quotes_gpc 的值。
語(yǔ)法: long get_magic_quotes_gpc(void);
傳回值: 長(zhǎng)整數(shù)
函式種類: PHP 系統(tǒng)功能

內(nèi)容說(shuō)明:
 
本函式取得 PHP 環(huán)境設(shè)定的變數(shù) magic_quotes_gpc (GPC, Get/Post/Cookie) 值。傳回 0 表示關(guān)閉本功能;傳回 1 表示本功能開(kāi)啟。當(dāng) magic_quotes_gpc 開(kāi)啟時(shí),所有的 ' (單引號(hào)), " (雙引號(hào)), \ (反斜線) and 空字符會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的溢出字符。

addslashes -- 使用反斜線引用字符串

描述:

string addslashes ( string str)
返回字符串,該字符串為了數(shù)據(jù)庫(kù)查詢語(yǔ)句等的需要在某些字符前加上了反斜線。這些字符是單引號(hào)(')、雙引號(hào)(")、反斜線(\)與 NUL(NULL 字符)。

一個(gè)使用 addslashes() 的例子是當(dāng)你要往數(shù)據(jù)庫(kù)中輸入數(shù)據(jù)時(shí)。例如,將名字 O'reilly 插入到數(shù)據(jù)庫(kù)中,這就需要對(duì)其進(jìn)行轉(zhuǎn)義。大多數(shù)據(jù)庫(kù)使用 \ 作為轉(zhuǎn)義符:O\'reilly。這樣可以將數(shù)據(jù)放入數(shù)據(jù)庫(kù)中,而不會(huì)插入額外的 \。當(dāng) PHP 指令 magic_quotes_sybase 被設(shè)置成 on 時(shí),意味著插入 ' 時(shí)將使用 ' 進(jìn)行轉(zhuǎn)義。

默認(rèn)情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對(duì)所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes()。不要對(duì)已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過(guò)的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義。遇到這種情況時(shí)可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測(cè)。

例子 1. addslashes() 示例

復(fù)制代碼 代碼如下:
$str = "Is your name O'reilly?";
// 輸出:Is your name O\'reilly?
echo addslashes($str);
?>
get_magic_quotes_gpc()

本函數(shù)取得 PHP 環(huán)境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關(guān)閉本功能;返回 1 表示本功能打開(kāi)。當(dāng) magic_quotes_gpc 打開(kāi)時(shí),所有的 ' (單引號(hào)), " (雙引號(hào)), \ (反斜線) and 空字符會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的溢出字符。
 
magic_quotes_gpc

對(duì)于 php.ini 中的 magic_quotes_gpc,是設(shè)置為 off 還是為 on 呢?

個(gè)人觀點(diǎn),應(yīng)該設(shè)置為 on

總結(jié)如下:

1. 對(duì)于magic_quotes_gpc=on的情況,

我們可以不對(duì)輸入和輸出數(shù)據(jù)庫(kù)的字符串?dāng)?shù)據(jù)作
addslashes()和stripslashes()的操作,數(shù)據(jù)也會(huì)正常顯示。

如果此時(shí)你對(duì)輸入的數(shù)據(jù)作了addslashes()處理,
那么在輸出的時(shí)候就必須使用stripslashes()去掉多余的反斜杠。

2. 對(duì)于magic_quotes_gpc=off 的情況

必須使用addslashes()對(duì)輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出
因?yàn)閍ddslashes()并未將反斜杠一起寫(xiě)入數(shù)據(jù)庫(kù),只是幫助mysql完成了sql語(yǔ)句的執(zhí)行。

補(bǔ)充:

magic_quotes_gpc 作用范圍是:WEB客戶服務(wù)端;作用時(shí)間:請(qǐng)求開(kāi)始時(shí),例如當(dāng)腳本運(yùn)行時(shí).
magic_quotes_runtime 作用范圍:從文件中讀取的數(shù)據(jù)或執(zhí)行exec()的結(jié)果或是從SQL查詢中得到的;作用時(shí)間:每次當(dāng)腳本訪問(wèn)運(yùn)行狀態(tài)中產(chǎn)生的數(shù)據(jù)
 
代碼:

復(fù)制代碼 代碼如下:
<?php 
/*
有時(shí)表單提交的變量不止一個(gè),可能有十幾個(gè),幾十個(gè)。那么一次一次地復(fù)制/粘帖addslashes(),是否麻煩了一點(diǎn)?由于從表單或URL獲取的數(shù)據(jù)都是以數(shù)組形式出現(xiàn)的,如$_POST、$_GET)那就自定義一個(gè)可以“橫掃千軍”的函數(shù)
*/ 
function quotes($content) 

//如果magic_quotes_gpc=Off,那么就開(kāi)始處理 
if (!get_magic_quotes_gpc()) { 
//判斷$content是否為數(shù)組 
if (is_array($content)) { 
//如果$content是數(shù)組,那么就處理它的每一個(gè)單無(wú) 
foreach ($content as $key=>$value) { 
$content[$key] = addslashes($value); 

} else { 
//如果$content不是數(shù)組,那么就僅處理一次 
addslashes($content); 

} else { 
//如果magic_quotes_gpc=On,那么就不處理 

//返回$content 
return $content; 

?>

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 關(guān)于php程序報(bào)date()警告的處理(date_default_timezone_set)

    關(guān)于php程序報(bào)date()警告的處理(date_default_timezone_set)

    PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function
    2013-10-10
  • php中mysql連接方式PDO使用詳解

    php中mysql連接方式PDO使用詳解

    本文主要詳細(xì)介紹了PHP中mysql的連接方式PDO的各種使用方法,算是個(gè)人的一個(gè)小結(jié),如有遺漏還請(qǐng)告之,有需要的小伙伴來(lái)參考下吧。
    2015-02-02
  • PHP利用ffmpeg獲取音頻、視頻的詳細(xì)信息

    PHP利用ffmpeg獲取音頻、視頻的詳細(xì)信息

    這篇文章給大家介紹了使用PHP利用ffmpeg獲取音頻、視頻的詳細(xì)信息,音視頻總時(shí)長(zhǎng)、碼率、視頻分辨率、音頻編碼、音頻采樣頻率、實(shí)際播放時(shí)間、文件大小,文中給出詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01
  • PHP實(shí)現(xiàn)一維數(shù)組與二維數(shù)組去重功能示例

    PHP實(shí)現(xiàn)一維數(shù)組與二維數(shù)組去重功能示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)一維數(shù)組與二維數(shù)組去重功能,結(jié)合實(shí)例形式分析了php針對(duì)一維數(shù)組與二維數(shù)組進(jìn)行遍歷、判斷、排序、去重等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Php中文件下載功能實(shí)現(xiàn)超詳細(xì)流程分析

    Php中文件下載功能實(shí)現(xiàn)超詳細(xì)流程分析

    瀏覽器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求訪問(wèn)服務(wù)器中的某個(gè)網(wǎng)頁(yè)(如:down.php),該網(wǎng)頁(yè)的代碼如下
    2012-06-06
  • PHP數(shù)據(jù)加密方式梳理介紹

    PHP數(shù)據(jù)加密方式梳理介紹

    數(shù)據(jù)加密在我們生活中的地位已經(jīng)越來(lái)越重要了,尤其是考慮到在網(wǎng)絡(luò)上發(fā)生的大量 交易和傳輸?shù)拇罅繑?shù)據(jù)。如果對(duì)于采用安全措施有興趣的話,也一定會(huì)有興趣了解PHP提供的一系列安全功能
    2022-09-09
  • php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代碼解密

    php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29

    今天在百度知道上面有個(gè)朋友問(wèn)php代碼解密的問(wèn)題,看了代碼不是常見(jiàn)幾種比較感興趣,特意搜索了下,發(fā)現(xiàn)下面的方法,解決了,具體的看最后的說(shuō)明。
    2011-01-01
  • 淺析Apache中RewriteCond規(guī)則參數(shù)的詳細(xì)介紹

    淺析Apache中RewriteCond規(guī)則參數(shù)的詳細(xì)介紹

    Apache中 RewriteCond語(yǔ)句對(duì)于我來(lái)說(shuō)一直是個(gè)難點(diǎn),多次試圖去把它搞明白,都沒(méi)有結(jié)構(gòu),這次我終于算大概知道它的意思了
    2013-06-06
  • 輕松實(shí)現(xiàn)php文件上傳功能

    輕松實(shí)現(xiàn)php文件上傳功能

    這篇文章主要教大家輕松實(shí)現(xiàn)php文件上傳功能,利用PHP可以把文件上傳到服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • PHP實(shí)現(xiàn)將MySQL重復(fù)ID二維數(shù)組重組為三維數(shù)組的方法

    PHP實(shí)現(xiàn)將MySQL重復(fù)ID二維數(shù)組重組為三維數(shù)組的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)將MySQL重復(fù)ID二維數(shù)組重組為三維數(shù)組的方法,涉及php針對(duì)數(shù)組的遍歷與轉(zhuǎn)換操作相關(guān)技巧,需要的朋友可以參考下
    2016-08-08

最新評(píng)論

大竹县| 巴塘县| 杂多县| 南康市| 赣榆县| 泸西县| 逊克县| 尼玛县| 呼玛县| 龙门县| 静乐县| 来凤县| 三明市| 安多县| 阳曲县| 茂名市| 合阳县| 五常市| 武穴市| 永寿县| 望都县| 锡林浩特市| 衡南县| 察雅县| 全南县| 偏关县| 慈利县| 云阳县| 阳朔县| 永康市| 浙江省| 项城市| 平和县| 鄂尔多斯市| 翁牛特旗| 桐庐县| 隆德县| 黄平县| 阿坝县| 万载县| 九龙城区|