mysql - 在 node-mysql 中防止 SQL 注入(inject)的最佳实践是什么?

标签 mysql node.js sql-injection node-mysql

有一些关于这个主题的讨论(例如 Preventing SQL injection in Node.js )但实际上没有明确的清晰度或深入的讨论,更不用说任何地方的良好文档了。 node-mysql 文档讨论了 SQL 注入(inject)的预防和一些转义函数。但是,这些函数如何防止 SQL 注入(inject)尚不清楚。手册上说“字符串已安全转义”。仅此而已...是否仅限于转义某些字符?

对于与 connection.escape 和 pool.escape 中相同的功能,在 node-mysql 中似乎还有其他等价物,再次强调这些功能用于防止 SQL 注入(inject)。

在 node-mysql 中似乎也不支持真正的 prepare 语句。计划和文件在这方面再次不清楚。 Node-mysql 显然是 node.js 环境中非常流行的模块,并且至少在我有限的使用经验中相当稳定。 在 node-mysql 中防止 SQL 注入(inject)的最佳实践是什么?

最佳答案

仍然sequelize是脆弱的

db.query('SELECT Desc FROM Items WHERE Username IN (:names)', {
  replacements: {
    names: ["Bobby", "'); DELETE FROM Items WHERE 1=1; --')"]
  }
});

关于mysql - 在 node-mysql 中防止 SQL 注入(inject)的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699488/

相关文章:

security - 通过在查询中附加不带空格的输入,我是否容易受到 SQL 注入(inject)攻击?

security - SQL 注入(inject),即使在转义引号时也是如此

mysql - 搜索逻辑分片

node.js - 如果 Github Actions 中未指定,则使用什么 Node 版本

javascript - MongoDB/Meteor/Export MONGO_URL 到部署的应用程序

javascript - Nodejs Express 4.0 post json对象

mysql - DVWA 1.8 - SQL 注入(inject) - 更改用户密码

java - 使用JDBC和MySQL解决“通信链接失败”问题

mysql - 使用 maxdate 更新行,其中给出了 id from select 和 maxdate from select

MySQL 三态属性