【问题标题】:MySQL INSERT SET with PASSWORD()MySQL INSERT SET 与 PASSWORD()
【发布时间】: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


【解决方案1】:

,您不能在 JavaScript 代码中使用这样的 MySQl 函数。

您遵循的第一种方法是您必须遵循的唯一方法。

req.body = {
  username: 1,
  password: 1
}

conn.query('INSERT INTO user SET username = ?, password = PASSWORD(?)',
  [req.body.username, req.body.password])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多