【问题标题】:Change password with mysql query in node.js?在 node.js 中使用 mysql 查询更改密码?
【发布时间】:2017-07-26 03:53:36
【问题描述】:

我尝试更改 ID 为:273 的用户的密码,但我尝试了所有方法,但没有成功。我打算用它来通过 node.js 管理我的数据库

这是我的代码:

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'kitsune',
    //connectionLimit: 50,
    port: 3306 });

connection.connect(function(err) {
    if (err) throw err;
});

const iduser = 273; // ID
const newPassword = "dfgfgSD22";

// Change password to uppercased md5
var insertQuery = "UPDATE `penguins` SET `Password` = UPPER(MD5('" + newPassword + "') WHERE ID = " + iduser + ";"

connection.query(insertQuery, function(error, results, fields) {;
    console.log(insertQuery);
    console.log(JSON.stringify(results));
  if (error) throw error;
});
module.exports = connection;
connection.end(); // End connection

它应该更新ID为273的用户的密码,md5大写,但我不断收到以下错误:

错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查 与您的 MariaDB 服务器版本相对应的手册 在第 1 行的“WHERE ID = 273”附近使用的语法

打印出来的查询:

更新penguins SET Password = UPPER(MD5('dfgfgSD22') 其中 ID = 273;

【问题讨论】:

  • 您缺少括号"') ) WHERE
  • 不要使用 MD5 作为密码。 绝对至少使用 Bcrypt 或 Scrypt 之类的东西。
  • 警告:您还紧急需要在创建serious SQL injection hole 之前阅读escaping query values。很抱歉这里的所有恐慌,但如果您不小心,您将创建一个黑客访问门户而不是用户访问系统。
  • @Hackerman +1 工作正常。谢谢你和其他人的帮助。我还会检查您提供给 lleon 的链接以防止出现问题。
  • @tadman 是正确的,但这是一个 .js 文件,即 server-sided,用户永远不会接触到它。

标签: javascript mysql sql node.js passport.js


【解决方案1】:

你写了

var insertQuery = "UPDATE `penguins` SET `Password` = UPPER(MD5('" + newPassword + "') WHERE ID = " + iduser + ";"

这里

`Password` = UPPER(MD5('" + newPassword + "')

现在只有一个括号关闭

`Password` = UPPER(MD5('" + newPassword + "'))

以下行替换

  var insertQuery = "UPDATE `penguins` SET `Password` = UPPER(MD5('" + newPassword + "')) WHERE ID = " + iduser + ";"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2016-08-14
    • 2014-12-10
    • 2012-08-08
    • 2013-12-15
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多