addslashes和mysql_real_escape_string

本文介紹的是用 mysql_real_escape_string對用戶提交數據進行整理處理和通過addslashes以及mysql_escape_string這3個類似的功能函數的區別。經過轉義的數據可以直接插入到數據庫中。

很好的說明了addslashes和mysql_real_escape_string的區別,雖然國內很多PHP coder仍在依靠addslashes防止SQL注入(包括我在內),我還是建議大家加強中文防止SQL注入的檢查。addslashes的問題在于黑客可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改爲0xbf5c27,成爲一個有效的多字節字符,其中的0xbf5c仍會被看作是單引號,所以addslashes無法成功攔截。

當然addslashes也不是毫無用處,它是用于單字節字符串的處理,多字節字符還是用mysql_real_escape_string吧。

另外對于php手冊中get_magic_quotes_gpc的舉例:

if (!get_magic_quotes_gpc()) {

$lastname = addslashes($_POST[『lastname』]);

} else {

$lastname = $_POST[『lastname』];

}

最好對magic_quotes_gpc已經開放的情況下,還是對$_POST[』lastname』]進行檢查一下。

再說下mysql_real_escape_string和mysql_escape_string這2個函數的區別:

mysql_real_escape_string 必須在(PHP 4 >= 4.3.0, PHP 5)的情況下才能使用。否則只能用 mysql_escape_string ,兩者的區別是:

mysql_real_escape_string 考慮到連接的當前字符集,而mysql_escape_string 不考慮。

總結一下:

addslashes() 是強行加;

mysql_real_escape_string() 會判斷字符集,但是對PHP版本有要求;

mysql_escape_string不考慮連接的當前字符集。

· 把年齡相仿的獅虎熊放一起,誰更厲害?結果出人意料

很多人都想知道獅子、老虎和熊打起來誰最厲害,于是便有好事之人把這三種動物關在一起...

· 湖北宜昌三峽壩區水面驚現神秘動物

近日,湖北宜昌,一段視頻在當地熱傳:有網友在三峽壩區拍到神秘動物,體型碩大數米長...

· 什麽是語段?語段的類型以及和句群、段落的區別與聯系是什麽?

句群是最高級的語言單位。 段落(自然段)是章法單位...

 
mysql中的mysql_real_connect連接參數設置
在前一篇文章中,講述了如何進行mysql源程序代碼的編譯鏈接,但是沒有講述運行情況,在按照上一篇文章代碼下進行編譯運行後,發現無法鏈接數據庫文件,顯然是在mysql_real_connect()函數中出現了問題。在mysql的英...查看完整版>>mysql中的mysql_real_connect連接參數設置
 
打破鍵盤陳規 聯想放大Delete與Escape兩鍵
  7月7日消息,經過曆時一年的研究後,聯想(Lenovo)在新推出的筆記本電腦ThinkPad系列中,做了一項設計新變革。但這項改變不像時下流行把筆記本電腦變得更輕薄,而是破天荒在鍵盤上安裝了特大號的“Delete”與“Es...查看完整版>>打破鍵盤陳規 聯想放大Delete與Escape兩鍵
 
URL編碼轉換,escape() encodeURI() encodeURIComponent()
escape() 方法:采用ISO Latin字符集對指定的字符串進行編碼。所有的空格符、標點符號、特殊字符以及其他非ASCII字符都將被轉化成%xx格式的字符編碼(xx等于該字符在字符集表裏面的編碼的16進制數字)。比如,空格符...查看完整版>>URL編碼轉換,escape() encodeURI() encodeURIComponent()
 
ASP接收Ajax 在POST方式下發送的escape編碼中的個別亂碼
看代碼: var xmlhttp=getHTTPObject(); var post="test·test+test·"; xmlhttp.open('POST', 'test.asp?random='+Math.random(), true); xmlhttp.setrequestheader("content-length",post.length); ...查看完整版>>ASP接收Ajax 在POST方式下發送的escape編碼中的個別亂碼
 
escape,encodeURI,encodeURIComponent函數比較
js對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,相應3個解碼函數:unescape,decodeURI,decodeURIComponent1、 傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。...查看完整版>>escape,encodeURI,encodeURIComponent函數比較