Skip to content

SQL 注入防护

SQL 注入是最常见的 Web 安全漏洞之一。

什么是 SQL 注入?

SQL 注入是通过在输入中插入恶意 SQL 代码来攻击数据库。

危险示例

php
<?php
// 危险!容易受到 SQL 注入攻击
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $id";
$result = mysqli_query($conn, $sql);
?>

攻击者可以输入:1 OR 1=1,导致查询所有用户。

防护方法

使用预处理语句

php
<?php
// 使用 MySQLi
$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();

// 使用 PDO
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([':id' => $id]);
?>

转义输入

php
<?php
$id = mysqli_real_escape_string($conn, $_GET['id']);
?>

最佳实践

  • 始终使用预处理语句
  • 验证和过滤输入
  • 使用最小权限原则
  • 定期更新数据库

下一步

学习 XSS 防护 → XSS 防护

基于 VitePress 构建