卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

函數(shù)daddslashes源碼分析

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

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

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

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

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

daddslashes函數(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中的所有鍵名,并將結果保存在變量$keys中。

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

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

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

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

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

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

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

注入漏洞風險與建議

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

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

標簽: