前端 JS 驗證只能提升體驗,後端必須二次驗證/過濾。典型 SQL 注入範例:
$username = $_POST['name'];
$password = $_POST['password'];
$sql = "SELECT userid FROM usertable WHERE username='$username' AND password='$password'";
攻擊者輸入 admin' -- 即繞過密碼驗證。
正確做法:使用預處理語句
$stmt = $mysqli->prepare("SELECT userid FROM usertable WHERE username=? AND password=?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$mysqli->set_charset("utf8mb4");(支援 Emoji)。AVG(),統計用 COUNT(),分組用 GROUP BY。SELECT *,明確列出需要欄位,降低 I/O 與記憶體。INSERT/UPDATE/DELETE(需同步維護 B+ 樹)。EXPLAIN、SHOW INDEX、pt-query-digest 分析慢查詢。DATE/DATETIME/TIMESTAMP,勿用字串/整數儲存。DECIMAL(10,2),避免浮點誤差。mysqldump + 定時任務 + 異地儲存),定期演練恢復。建立上述習慣,能讓 PHP + MySQL 專案在安全性、效能、維護性上穩健前行。