mysql_real_escape_string:限制與用法
簡介
請問e_string通常用於防止SQL注入,它有一定的局限性,可能會離開應用程式正確用法和限制
mysql_real_escape_string旨在轉義在 SQL 語句中用作引號內的值的文字內容。錯誤地應用它,例如在不帶引號的值或整個 SQL 語句中,可能會導致注入風險。無效或不可轉義的值
數字值和不帶引號的輸入無法有效使用 mysql_real_escape_string 轉義。對於數值,建議轉換為適當的類型,而未加引號的輸入應在查詢中作為字串處理。錯誤用法範例
mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
微妙的漏洞
使用mysql_query("SET NAMES 'utf8'", $link) 時會出現另一個潛在問題設定資料庫連線編碼而不是mysql_set_charset( 'utf8', $link)。這會在客戶端 API 的假定編碼與資料庫的解釋之間造成不匹配,這可能會導致多位元組字串的注入漏洞。結論
mysql_real_escape_string 有基本限制,特別是在確保正確使用。了解其預期目的並避免錯誤應用至關重要。考慮使用替代且更安全的方法,例如準備好的語句,以增強對 SQL 注入的保護。以上是mysql_real_escape_string 足以防止 SQL 注入嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!