Node.js + Mysql 防止sql注入的写法
在Node.js中使用MySQL时,为了防止SQL注入,你应该使用参数化查询(也称为预处理语句)。这通常是通过使用Node.js的MySQL库,例如mysql
或mysql2
,来实现的,这些库支持使用?作为参数占位符,然后提供一个包含这些参数的数组或对象。
以下是一个使用mysql
库的例子,展示了如何使用参数化查询来防止SQL注入:
const mysql = require('mysql');
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
// 打开连接
connection.connect();
// 使用参数化查询来防止SQL注入
const userId = 'someUserId';
const safeQuery = 'SELECT * FROM users WHERE id = ?';
connection.query(safeQuery, [userId], function(error, results, fields) {
if (error) throw error;
// 对结果进行处理
console.log(results);
});
// 关闭连接
connection.end();
在这个例子中,?
是一个参数占位符,然后在connection.query
调用时,我们提供了一个包含用户ID的数组作为第二个参数。这样,无论用户ID的内容如何,都不会导致SQL注入攻击,因为MySQL会将?
替换为提供的值,并确保它被当作值处理,而不是SQL代码的一部分。
评论已关闭