PHP PDO 预处理语句防止 SQL 注入攻击

代码本身没有错,但是没有考虑到可能会有 SQL 注入的问题。应该使用预处理语句来避免 SQL 注入攻击。具体做法如下:

  1. 使用 PDO 的预处理功能,将 SQL 语句和参数分开,避免 SQL 注入攻击。

  2. 在执行预处理语句之前,使用 bindParam() 或 bindValue() 方法将参数绑定到预处理语句中。

修改后的代码如下:

<?php
$dsn = 'mysql:host=localhost;dbname=db_books';
try {
    $pdo = new PDO($dsn, 'root', 'root');
} catch (Exception $e) {
    echo '连接失败' . $e->getMessage();
}

$id = $_GET['id'];

$sql = 'SELECT * FROM books WHERE id = :id';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();

$row = $stmt->fetch();
?>

解释:

  • 使用 prepare() 方法创建预处理语句,将 SQL 语句和参数分开。
  • 使用 bindParam() 方法将 :id 占位符绑定到 $id 变量,并指定参数类型为 PDO::PARAM_INT。
  • 使用 execute() 方法执行预处理语句。

总结:

通过使用 PDO 的预处理语句,可以有效地防止 SQL 注入攻击,确保数据库安全。建议在所有与数据库交互的代码中使用预处理语句,以提高代码安全性。

PHP PDO 预处理语句防止 SQL 注入攻击

原文地址: https://www.cveoy.top/t/topic/nAKe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录