MySQL是一種流行的數據庫管理系統。在處理用戶輸入時,我們需要注意轉義字符的使用,以避免惡意代碼的注入。MySQL提供了escaped函數可以解決這個問題。
$mysqli = new mysqli("localhost", "username", "password", "database"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: " . $mysqli->connect_error; exit(); } $username = "admin'; DROP TABLE users; --"; $username = $mysqli->real_escape_string($username); $query = "SELECT * FROM users WHERE username='$username'"; if ($result = $mysqli->query($query)) { while ($row = $result->fetch_assoc()) { echo $row["id"] . " " . $row["username"]; } $result->free(); }
在上述代碼中,$username變量被賦值為惡意字符串。使用real_escape_string()函數將特殊字符轉義,使其不會被解釋為代碼。在查詢語句中,使用轉義后的$username變量,以確保SQL語句不被注入惡意代碼。
在使用MySQL時,請務必避免直接將用戶輸入插入到SQL語句中。因為這可能導致SQL注入攻擊,可以避免脆弱性使用escaped函數等方法。