gpt4 book ai didi

javascript - 在 MysQl nodeJS 查询中转义数据数组的最佳方法

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:42 24 4
gpt4 key购买 nike

所以我有以下对象,它是由用户为了注册而提交的数据构成的:

  var dataToInsert = { 
userName: 'Wilson J',
userEmail: 'WilsonJ@gmail.com',
userAddress: '2020 St.',
userCellPhone: '95587412',
}

我正在使用以下查询来插入它:

 var insertQuery = `INSERT INTO users ( ${Object.keys(dataToInsert).toString()} ) VALUES( '${Object.values(dataToInsert).join("','")}' )`;

最后被认为是:

INSERT INTO
users (
userName,
userEmail,
userAddress,
userCellPhone
)
VALUES
(
'Wilson J',
'WilsonJ@gmail.com',
'2020 St',
95587412
)

到目前为止,我很难理解数据转义的工作原理。如果有人可以向我展示此代码如何发生 SQL 注入(inject)以及如何防止它,我将不胜感激。

我正在使用 MysQl npm 模块,它有这个方法:mysql.escape() 但我想找到一种更自动化的方法,而不是手动转义每个值。

最佳答案

在当今时代,除了将变量绑定(bind)到查询之外,不鼓励做任何其他事情。参见 this有关其他转义数据方法的更多信息:

connection.query(`
INSERT INTO users ( ${Object.keys(dataToInsert).toString()} ) VALUES (?)`,
Object.values(dataToInsert),
function (error, results, fields) {
if (error) throw error;
// ...
}
);

警告:您无法将变量绑定(bind)到列名,因此不幸的是,查询的这一部分是必需的。确保您的 dataToInsert 键是静态的,或者不是来自任何用户输入。

关于javascript - 在 MysQl nodeJS 查询中转义数据数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52891779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com