亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql_real_escape_string()是否完全可以防止SQL注入?

mysql_real_escape_string()是否完全可以防止SQL注入?

冉冉說 2019-12-26 10:56:00
在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/?akst_action=share-this上,有一節聲稱您可以使用某些亞洲字符編碼繞過mysql_real_escape_string用BIG5或GBK繞過mysql_real_escape_string()“注入線”に關する追加情報:以上字符是中國Big5這是真的嗎?如果是的話,如果您無法訪問準備好的陳述,那么如何保護您的網站呢?
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

根據Stefan Esser的說法,“ mysql_real_escape_string()[ SET NAMES使用時不安全] 。”


來自他的博客的解釋:


SET NAMES通常用于將編碼從默認設置切換到應用程序需要的設置。這是mysql_real_escape_string不知道的方式完成的。這意味著,如果您切換到允許反斜杠作為2nd 3rd 4th…字節的多字節編碼,則會遇到麻煩,因為mysql_real_escape_string無法正確轉義。UTF-8是安全的…


更改編碼的安全方法是mysql_set_charset,但這僅在新的PHP版本中可用


他確實提到UTF-8是安全的。


查看完整回答
反對 回復 2019-12-26
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

這是一個MySQL服務器錯誤,據報道早在2006年5月就已修復。

看到:

  • MySQL錯誤#8303:具有包含\的多字節字符的字符串文字被錯誤地詞匯化

  • MySQL Bug#8317:查詢中的字符集介紹程序無法覆蓋連接字符集

  • MySQL錯誤#8378:字符串錯誤地用客戶端字符集'gbk'逸出

  • MySQL的5.1.11 更新日志。

據報告該錯誤已在MySQL 4.1.20、5.0.22、5.1.11中修復。

如果使用4.1.x,5.0.x或5.1.x,請確保至少已升級到次要修訂號。

解決方法是,您還可以啟用SQL模式NO_BACKSLASH_ESCAPES,該模式禁用反斜杠作為引號轉義字符。


查看完整回答
反對 回復 2019-12-26
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

正如其他人所證明的,mysql_real_escape_string()在晦澀的邊緣情況下可以繞開。這是繞過轉義邏輯的一種已知策略,但是可能還有其他未知漏洞尚未發現。

防止PHP中的SQL注入的一種簡單有效的方法是在可能的地方使用準備好的語句,在不能的地方使用非常嚴格的白名單。

經證明的預處理語句在實際使用且不受PDO驅動程序仿真時,被證明是安全的(至少在SQL注入方面),因為它們解決了應用程序安全性的根本問題:它們將數據與對數據進行操作的指令分開。它們以單獨的數據包發送;參數化的值永遠不會有機會污染查詢字符串。

是2015年。不要逃脫和連接了。您仍然應該根據應用程序(和業務)邏輯來驗證輸入,但是只使用準備好的語句。


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 1120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號