国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

函數(shù)daddslashes源碼分析

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

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

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

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

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

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

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

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

使用is_array()函數(shù)來(lái)判斷參數(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)體中,首先將鍵名對(duì)應(yīng)的值賦給變量$val,然后使用unset()函數(shù)釋放掉數(shù)組$string中該鍵名對(duì)應(yīng)的元素。

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

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

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

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

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

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

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

標(biāo)簽: