程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql查詢帶單引號字符串及插入帶單引號字符串需要注意問題

Mysql查詢帶單引號字符串及插入帶單引號字符串需要注意問題

編輯:MySQL綜合教程

本文主要介紹的是使用 addslashes,mysql_escape_string 和 mysql_real_escape_string 這三個函數對用戶提交的表單數據進行轉義處理的用法和區別。

首先需要明確的是addslashes,mysql_escape_string和mysql_real_escape_string這三個函數都是對即將要插入到數據庫中的數據進行過濾從而保證插入到數據庫中的數據的安全,防止數據庫遭到攻擊。那麼這三個函數有些什麼區別呢?

addslashes() 函數在指定的預定義字符前添加反斜槓。這些預定義字符是:

單引號 (')
雙引號 (")
反斜槓 (\)
NULL

mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符,必須在(PHP 4 >= 4.3.0, PHP 5)的情況下才能使用。

下列字符受影響:

\x00
\n
\r
\
'
"
\x1a

如果成功,則該函數返回被轉義的字符串。如果失敗,則返回 false。

本函數將 string 中的特殊字符轉義,並考慮到連接的當前字符集,因此可以安全用於 mysql_query()。

mysql_escape_string() 與 mysql_real_escape_string() 的區別就是前者不考慮連接的當前字符集,而後者考慮。具體這裡就不多說了,因為在 PHP 5.3 中已經棄用了這種方法,所以不推薦使用。

目前國內很多PHP coder僅僅依靠 addslashes 函數防止SQL語句注入,但這裡考慮的問題是不全面的。因為對於想繞過 addslashes 函數的黑客而言,他們可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改為0xbf5c27,成為一個有效的多字節字符,其中的0xbf5c仍會被看作是單引號,所以addslashes無法成功攔截。

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

您可能感興趣的文章

  • js數組轉字符串,js字符串轉數組的方法總結
  • javascript實現截取字符串功能總結(包括使用Js截取中文字符的介紹)
  • Mysql的索引優化的一些常識性問題
  • mysql查詢今天,昨天,近7天,近30天,本月,上一月數據的方法
  • php將字符串中全角字符轉換為半角字符
  • 關於mysql數據庫大小寫敏感的問題
  • MySQL replace函數替換字符串語句的用法
  • 程序員做網站開發時應該注意的SEO問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved