mysql_real_escape_string 可以安全地清理使用者輸入嗎?
出於對 SQL 注入的擔憂,開發人員經常使用 mysql_real_escape_string 來清理使用者輸入。然而,作為唯一衡量標準,其有效性引發了對其可靠性的質疑。
mysql_real_escape_string 的限制
雖然mysql_real_escape_string 是一個有用的實用程序,但它有限制:
更穩健的方法:準備好的語句
為了增強安全性,開發人員建議使用準備好的陳述。這種方法利用佔位符將使用者資料與 SQL 查詢分開,使其不受輸入篡改的影響。以下是範例:$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); $stmt->bindParam(1, $name); $stmt->bindParam(2, $value);準備好的語句有幾個優點:
其他保護措施
除了準備好的語句之外,還可以考慮使用:結論
為了獲得最佳安全性,單獨使用 mysql_real_escape_string 是不夠的。相反,合併準備好的語句作為防止 SQL 注入的主要保護措施。此外,考慮使用 HTMLPurifier 和嚴格的輸入驗證來實現使用者輸入清理的綜合方法。以上是mysql_real_escape_string 是否提供足夠的保護來防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!