【发布时间】:2017-12-30 12:29:48
【问题描述】:
req.body = {
username: 1,
password: 1
}
conn.query('INSERT INTO user SET username = ?, password = PASSWORD(?)',
[req.body.username, req.body.password])
当使用MySQL for Nodejs时,我们可以按照上面的方法插入一个用户。
但是,以下内容更简洁(允许通过添加到req.body 来设置更多字段而不更改代码):
conn.query('INSERT INTO user SET ?', req.body)
但是我们如何解决需要在req.body.password字段上调用PASSWORD()的问题呢?
【问题讨论】:
-
conn.query('INSERT INTO user SET ?', req.body.username, PASSWORD(req.body.password)); ,检查这是否适合你
-
@Deep
PASSWORD()是 MySQL 函数,不是 JS 函数。您的代码将给出PASSWORD未定义。 -
你不应该在你的应用程序中使用 MySQL 的 PASSWORD 函数。MySQL 的 PASSWORD 函数是为 MySQL 服务器读取的身份验证系统设计的 (dev.mysql.com/doc/refman/5.7/en/…) ... 你最好搜索一个 JavaScript 库支持bcrypt。(google.nl/search?q=javascript+bcrypt)
-
@RaymondNijland 没有注意到这一点,谢谢。好像我可以切换到
SHA2虽然dev.mysql.com/doc/refman/5.7/en/… -
当您生成 SSL 证书时,您会生成一个带有随机生成的盐的证书。一些 SSL 程序(如 PuttyGen)也使用随机鼠标位置作为盐的种子。我已经说过 SHA2当您使用盐时是安全的,当您对应用程序的密码进行哈希处理或在证书中使用它时并不重要。
标签: javascript mysql sql node.js mysqljs