防止 SQL 注入攻击是 Web 应用程序安全性的一个关键方面。以下是一些在 PHP 中防止 SQL 注入攻击的常见做法:
使用预处理语句:
使用 PDO 示例:
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
使用 MySQLi 示例:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
使用参数化查询:
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = ? AND password = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $password]);
验证和过滤输入:
filter_var
)进行过滤。$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
不信任用户输入:
限制数据库用户权限:
GRANT SELECT ON database.* TO 'webuser'@'localhost' IDENTIFIED BY 'password';
记录和监控:
使用 ORM 框架:
定期更新和维护:
综合以上措施,可以有效提高 PHP 应用程序抵御 SQL 注入攻击的能力。