8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

防止 JavaScript / Node.js 中的 SQL 注入

Quinten 1月前

11 0

我正在使用 Node.js 创建 Discord 机器人。我的部分代码如下所示:var info = { userid: message.author.id}connection.query(\'SELECT * FROM table WHERE userid = '\' + message.author.i...

我正在使用 Node.js 创建 Discord 机器人。我的部分代码如下:

var info = {
  userid: message.author.id
}

connection.query("SELECT * FROM table WHERE userid = '" + message.author.id + "'", info, function(error) {
  if (error) throw error;
});

人们说我输入的方式 message.author.id 不安全。我该怎么做?举个例子?

帖子版权声明 1、本帖标题:防止 JavaScript / Node.js 中的 SQL 注入
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Quinten在本站《node.js》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 最好的方法是使用准备好的语句或查询(NPM mysql 模块文档的链接: https://github.com/mysqljs/mysql#preparing-queries )

    var sql = "SELECT * FROM table WHERE userid = ?";
    var inserts = [message.author.id];
    sql = mysql.format(sql, inserts);
    

    如果准备好的语句不是一种选择(我不知道为什么它不是一种选择),那么防止 SQL 注入的穷人的方法是转义所有用户提供的输入,如下所述: https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet#MySQL_Escaping

  • 使用准备好的查询;

    var sql = "SELECT * FROM table WHERE userid = ?";
    var inserts = [message.author.id];
    sql = mysql.format(sql, inserts);
    

    您可以 在此处 .

  • 以下是有关如何正确转义任何用户提供的数据以防止 SQL 注入的文档: https://github.com/mysqljs/mysql#escaping-query-values . mysql.escape(userdata) 应该足够了。

返回
作者最近主题: