所以我有以下对象是由用户为了注册而提交的数据制作的:
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注入以及如何防止它,我将不胜感激。
我使用的是mysql npm模块,它有以下方法: mysql.escape()
但我希望找到一种更自动化的方法,而不是手动转义每个值。
2条答案
按热度按时间6xfqseft1#
在当今这个时代,除了将变量绑定到查询之外,不鼓励做任何事情。有关转义数据的其他方法的更多信息,请参见此:
注意:您将无法将变量绑定到列名,因此不幸的是,这部分查询是必需的。确保你的钥匙
dataToInsert
要么是静态的,要么不是来自任何用户输入。qkf9rpyu2#
或者,您可以使用?字符作为占位符的值,您希望这样转义:[…]
有办法。https://github.com/mysqljs/mysql#user-内容转义查询值