成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

函數(shù)daddslashes源碼分析

在根路徑下的source/function/function_文件中,我們可以找到函數(shù)daddslashes的源碼。daddslashes對addslashes函數(shù)進(jìn)行了一些擴(kuò)展,主要是增加了對數(shù)組的

在根路徑下的source/function/function_文件中,我們可以找到函數(shù)daddslashes的源碼。daddslashes對addslashes函數(shù)進(jìn)行了一些擴(kuò)展,主要是增加了對數(shù)組的支持,并對數(shù)組的鍵進(jìn)行處理。

addslashes函數(shù)與轉(zhuǎn)義字符

addslashes函數(shù)返回一個(gè)字符串,在某些特定字符前添加反斜線,以滿足數(shù)據(jù)庫查詢語句等的需要。這些特定字符包括單引號(')、雙引號(")、反斜線()和NULL字符。

在PHP 5.4之前,默認(rèn)情況下,magic_quotes_gpc指令是開啟的,實(shí)際上所有的GET、POST和COOKIE數(shù)據(jù)都經(jīng)過了addslashes()函數(shù)的處理。因此,如果已經(jīng)使用magic_quotes_gpc轉(zhuǎn)義過的字符串再次使用addslashes()函數(shù)會導(dǎo)致雙層轉(zhuǎn)義。在這種情況下,可以使用get_magic_quotes_gpc()函數(shù)進(jìn)行檢測。

daddslashes函數(shù)的實(shí)現(xiàn)

該函數(shù)通過判斷參數(shù)是否為數(shù)組來執(zhí)行不同的操作。

1. 判斷參數(shù)是否為數(shù)組

使用is_array()函數(shù)來判斷參數(shù)$string是否為數(shù)組,如果是數(shù)組,則執(zhí)行if體中的代碼。

2. 獲取數(shù)組的鍵名

使用array_keys()函數(shù)獲取數(shù)組$string中的所有鍵名,并將結(jié)果保存在變量$keys中。

3. 遍歷數(shù)組并處理鍵值

使用foreach循環(huán)遍歷數(shù)組$keys中的每一個(gè)鍵名$key。

在循環(huán)體中,首先將鍵名對應(yīng)的值賦給變量$val,然后使用unset()函數(shù)釋放掉數(shù)組$string中該鍵名對應(yīng)的元素。

接著,使用addslashes()函數(shù)對鍵名進(jìn)行處理,然后將處理后的鍵名作為新的鍵,將之前保存的值$val作為相應(yīng)的值賦給數(shù)組$string。

4. 處理非數(shù)組類型的參數(shù)

如果參數(shù)$string不是數(shù)組類型,則直接使用addslashes()函數(shù)對其進(jìn)行處理,并將處理后的結(jié)果賦給變量$string。

需要注意的是,這個(gè)函數(shù)在處理非數(shù)組類型的參數(shù)時(shí)存在一個(gè)bug,如果傳入?yún)?shù)$stringtrue,函數(shù)將返回字符串類型的數(shù)字1。

注入漏洞風(fēng)險(xiǎn)與建議

在不做任何處理的情況下,直接將用戶輸入拼接到SQL語句中保存到數(shù)據(jù)庫,可能會導(dǎo)致SQL注入的安全風(fēng)險(xiǎn)。因此,我不建議這樣做。

在開發(fā)過程中,為了防止SQL注入攻擊,通常會使用一些安全的方法來處理用戶輸入,比如使用mysql_escape_string函數(shù)或者框架提供的防注入機(jī)制。

標(biāo)簽: