如何在PHP防止数据库SQL注入

SQl注入的危害非常的大,下面这个示例就是一个典型的注入点,代码未对用户所提交的数据进行合法性检查。

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");

用户可通过提交类似 value'); DROP TABLE table;-- 这样的代码,运行时将执行下面的非法代码

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')

对数据安全性以及有效性破坏非常的大,在开发过程中一定要对用户提交信息进行合法性检查,针对PDO和MySQLi两种不同的数据库连接方式有如下两种处理办法。

1.PDO连接(适用于多种数据库)

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array('name' => $name));

foreach ($stmt as $row) {
    // do something with $row
}

 

2.MySQLi连接(仅适用于MySQL)

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据