1. 犀牛前端部落首页
  2. PHP教程

PHP预防SQL注入

使用准备好的语句和参数化查询。这些SQL语句被发送到数据库服务器并由数据库服务器独立于任何参数进行解析。这样,攻击者就不可能注入恶意SQL。

你基本上有两个选择来实现这一点:

方法一

使用PDO(任何支持的数据库驱动程序):

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

$stmt->execute([ 'name' => $name ]);

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

方法二

使用MySQLi:

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

$stmt->execute();

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

如果您连接的是MySQL以外的数据库,那么还有一个特定于驱动程序的第二个选项可以引用(例如,对于PostgreSQL, pg_prepare()和pg_execute())。

PDO是一个通用的选择。

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/4463.html

发表评论

登录后才能评论