本文目錄一覽:
- 1、php stripslashes和addslashes的區別
- 2、addslashes用途與php怎樣防止mysql注入
- 3、解析php addslashes與addclashes函數的區別和比較
- 4、php addslashes 後怎麼還原
- 5、php中addslashes()函數的用途
- 6、PHP中使用addslashes函數轉義的安全性原理分析
php stripslashes和addslashes的區別
就函數名稱來說他們的區別:stripslashes(剝離斜線)addslashes(添加斜線)
stripslashes(string $str)簡單說就是剝離或轉化$str字串中的斜線,官方的話說就是反引用一個引用字串。一個簡單的例子:echo stripslashes(“Is your name O\’reilly?”);//Is your name O’reilly?
addslashes(string $str)相反,就是添加斜線,官方的說法就是使用反斜線引用字符串。一個簡單的例子:echo addslashes(“Is your name O’reilly?”);//Is your name O\’reilly?
使用場景:其實這兩個函數主要使用在一些需要轉化特殊字符的數據處理中,比如數據庫操作,在寫入數據庫的時候,我們需要把單引號這樣的特殊字符轉義之後保存,而在讀取的時候,我們又需要把數據庫中的這些被轉義的特殊字符反轉義回來。
他們具體的用法及注意的地方可以參看PHP文檔
addslashes用途與php怎樣防止mysql注入
php中addslashes函數與sql防注入。具體分析如下:
addslashes可會自動給單引號,雙引號增加\\\\\\,這樣我們就可以安全的把數據存入數據庫中而不黑客利用,參數’a..z’界定所有大小寫字母均被轉義,代碼如下:
複製代碼 代碼如下:
echo addcslashes(‘foo[ ]’,’a..z’); //輸出:foo[ ]
$str=”is your name o’reilly?”; //定義字符串,其中包括需要轉義的字符
echo addslashes($str); //輸出經過轉義的字符串
定義和用法:addslashes() 函數在指定的預定義字符前添加反斜杠.
這些預定義字符是:單引號 (‘),雙引號 (“),反斜杠 (),null
語法:addslashes(string),當然這個函數更安全,實例代碼如下:
複製代碼 代碼如下:
$str=”a href=’test’test/a”; //定義包含特殊字符的字符串
$new=htmlspecialchars($str,ent_quotes); //進行轉換操作
echo $new; //輸出轉換結果
//不過輸出時要用到
$str=”jane ‘tarzan'”; //定義html字符串
echo html_entity_decode($str); //輸出轉換後的內容
echo “br/”;
echo html_entity_decode($str,ent_quotes); //有可選參數輸出的內容
解析php addslashes與addclashes函數的區別和比較
PHP addcslashes() 函數
定義和用法
addcslashes() 函數在指定的字符前添加反斜杠。
語法
addcslashes(string,characters)參數 描述
string 必需。規定要檢查的字符串。
characters 可選。規定受 addcslashes() 影響的字符或字符範圍。
提示和注釋
注釋:在對 0,r,n 和 t 應用 addcslashes() 時要小心。在 PHP 中,\0,\r,\n 和 \t 是預定義的轉義序列。
實例
例子 1
在本例中,我們要向字符串中的特定字符添加反斜杠:
?php
$str = “Hello, my name is John Adams.”;
echo $str;
echo addcslashes($str,’m’);
echo addcslashes($str,’J’);
?
/*
輸出:
Hello, my name is John Adams.
Hello, \my na\me is John Ada\ms.
Hello, my name is \John Adams.
*/
PHP addslashes() 函數
定義和用法
addslashes() 函數在指定的預定義字符前添加反斜杠。
這些預定義字符是:
•單引號 (‘)
•雙引號 (“)
•反斜杠 (\)
•NULL
語法
addslashes(string)參數 描述
string 必需。規定要檢查的字符串。
提示和注釋
提示:該函數可用於為存儲在數據庫中的字符串以及數據庫查詢語句準備合適的字符串。
注釋:默認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。
例子
在本例中,我們要向字符串中的預定義字符添加反斜杠:
?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.他們都有對應的去除他們添加的反斜杠的方法,分別是:stripcslashes()和stripslashes()。
*/
php addslashes 後怎麼還原
php 語言里,對於反斜杠的處理有 addslashes() 和 stripslashes(),兩者的作用正好相反:
addslashes():對輸入字符串中的某些預定義字符前添加反斜杠,這樣處理是為了數據庫查詢語句等的需要。這些預定義字符是:單引號 (‘) ,雙引號 (“) ,反斜杠 (\) ,NULL。
stripslashes():刪除由 addslashes() 函數添加的反斜杠。該函數用於清理從數據庫或 HTML 表單中取回的數據。(若是連續二個反斜杠,則去掉一個,保留一個;若只有一個反斜杠,就直接去掉。)
php中addslashes()函數的用途
addslashes
—
使用反斜線引用字符串
string
addslashes
(
string
str
)
返回字符串,該字符串為了數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(’)、雙引號(”)、反斜線(\)與
NUL(NULL
字符)。
一個使用
addslashes()
的例子是當你要往數據庫中輸入數據時。例如,將名字
O’reilly
插入到數據庫中,這就需要對其進行轉義。大多數據庫使用
\
作為轉義符:O\’reilly。這樣可以將數據放入數據庫中,而不會插入額外的
\。當
PHP
指令
magic_quotes_sybase
被設置成
on
時,意味着插入
‘
時將使用
‘
進行轉義。
默認情況下,PHP
指令
magic_quotes_gpc
為
on,它主要是對所有的
GET、POST
和
COOKIE
數據自動運行
addslashes()。不要對已經被
magic_quotes_gpc
轉義過的字符串使用
addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數
get_magic_quotes_gpc()
進行檢測。
PHP中使用addslashes函數轉義的安全性原理分析
本文實例講述了PHP中使用addslashes函數轉義的安全性原理分析。分享給大家供大家參考。具體分析如下:
先來看一下ECshop中addslashes_deep的原型
複製代碼
代碼如下:function
addslashes_deep($value)
{
if
(empty($value))
{
return
$value;
//如為空,直接返回;
}
else
{
return
is_array($value)
?
array_map(‘addslashes_deep’,
$value):
addslashes($value);
}
//遞歸處理數組,直至遍歷所有數組元素;
}
addslashes_deep函數本身沒有問題,但使用時得注意一點
恰好今天也是在網上看到了有人發了關於使用這個函數使用的BUG注入漏洞
這個函數在引用回調函數addslashes時,只對數據的值進行轉義,所以如果使用者在此過程中引用數組的鍵進行特定處理時,存在$key注入風險,此時可更改addslashes_deep函數,使其同時對鍵值進行轉義,或者使用時明確不引用鍵內容。
希望本文所述對大家的PHP程序設計有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156828.html