PHP PDO 预处理语句防止 SQL 注入攻击
PHP PDO 预处理语句防止 SQL 注入攻击
代码本身没有错,但是没有考虑到可能会有 SQL 注入的问题。应该使用预处理语句来避免 SQL 注入攻击。具体做法如下:
-
使用 PDO 的预处理功能,将 SQL 语句和参数分开,避免 SQL 注入攻击。
-
在执行预处理语句之前,使用 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 注入攻击,确保数据库安全。建议在所有与数据库交互的代码中使用预处理语句,以提高代码安全性。
原文地址: https://www.cveoy.top/t/topic/nAKe 著作权归作者所有。请勿转载和采集!