Tag: injection

Node.js / Javascript等价于mysql_real_escape_string()

我需要制作一个JavaScriptstring,它传递给Node.js对MSSQL友好。 这个问题: 使一个JavaScriptstringsql友好有一个很好的答案,解释如何为MySQL转义string: 感谢Paul D'Aoust function mysql_real_escape_string (str) { return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) { switch (char) { case "\0": return "\\0"; case "\x08": return "\\b"; case "\x09": return "\\t"; case "\x1a": return "\\z"; case "\n": return "\\n"; case "\r": return "\\r"; case "\"": case "'": case "\\": case "%": return "\\"+char; // prepends a backslash […]

防止JavaScript /节点中的SQL注入

我正在使用Node.js创build一个不和谐的机器人。 我的一些代码如下所示: 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方式并不安全。 我怎样才能做到这一点? 一个例子?

Node.js mysql包中的转义函数是否足够安全地查询mysql数据库(不使用预处理语句)?

根据Node.js的mysql 包文档 : 为了避免SQL注入攻击,在SQL查询中使用数据之前,应该始终转义任何用户提供的数据。 你可以使用mysql.escape(),connection.escape()或pool.escape()方法。 我找不到任何使用mysql准备语句的文档/参考,除了在引用中使用'?' 字符。 它声明如下: 或者,你可以使用? 字符作为您想要转义的值的占位符… 这看起来与MySQL中的预处理语句类似, 但是它实际上在内部使用相同的connection.escape()方法。 从我与其他开发人员谈话的经验来看,开发人员社区中的普遍共识是准备好的语句是从Node.js执行mysql查询的唯一安全方式,但是,您可以使用mysql包来看到,没有明显的支持准备好陈述。 但是,表明他们避免SQL注入的方法是通过使用转义函数。 我的问题: mysql包中的转义函数是否足够安全地查询mysql数据库(不使用预准备语句)?

节点MSSQL – 如何使用内置的SQL注入保护

我正在查看MSSQL模块中针对Node的内置SQL注入保护: https://www.npmjs.com/package/mssql#injection 但是我并不完全明白如何为我的查询清理值。 我猜request.input('myval', sql.VarChar, '– commented')语句清理“myvar”对查询的其余部分被注释掉。 如果我想对其他东西进行消毒呢? 如drop table语句等 任何人都可以帮我吗?