【问题标题】:Sequelize: SQL Injection with sequelize.querySequelize:使用 sequelize.query 进行 SQL 注入
【发布时间】:2021-09-27 01:51:43
【问题描述】:

我是第一次将 Sequelize 与 PostgreSQL 一起使用。这也是我很久以来第一次使用 SQL 数据库。

我一直在研究如何提高一些 SQL 查询的性能和安全性。我遇到了sequelize.query() 方法并开始为此目的使用它。

这种方式会使 Sequelize 中的raw queries 容易受到 SQL 注入攻击吗?

【问题讨论】:

  • 安全性和性能是两个独立的问题,最好单独提出。
  • 你为什么还要使用sequelize.query?为什么不使用模型文件?
  • 如果 sequelize.query 完成工作并且没有任何安全或性能漏洞,那么我将使用它。否则将转向使用 ORM 进行查询。
  • 或性能漏洞”通常是 ORM 将查询发送到数据库引擎。没有“性能”可言,因为它将运行查询的是数据库引擎。因此,如果您提供了一个错误的查询,那么您将它交给哪个库以将其移交给同一个数据库引擎并不重要。其次,即使有一个好的查询通常更大的减速来自与数据库的连接 - 如果到数据库本身的往返需要 100 毫秒,那么从 4 毫秒到 3 毫秒优化查询将不会节省你有很多时间。正如我所说,性能是一个完全独立的话题。

标签: node.js postgresql sequelize.js sql-injection


【解决方案1】:

虽然您可以避免它们,但您也可以发出易受 SQL 注入攻击的查询。

如果您仅使用所有用户输入的值使用Replacements or Bind Parameters的查询,您应该是安全的。

【讨论】:

    【解决方案2】:

    这是否容易受到 SQL 注入的影响:简单的答案是“是”。 您正在使用原始查询。如果该原始查询曾经从用户输入中获得输入,无论多么间接,您都可能会打开 SQL 注入。风险是否真实取决于您的其余代码。

    性能不同。原始查询可能比使用 sequalize 方法性能稍高,但更多地依赖于数据库结构和查询本身的性质。这是一个宽泛的话题,无法从所提供的信息中得到答案。

    【讨论】:

    • 我应该在哪里查找有关此主题的更多信息?
    • 关于哪个主题?性能或 SQL 注入。对于 SQL 注入,请查看 OWASP 前 10 名并阅读...很多...您应该真正了解那里的所有内容。对于查询性能,您需要了解不同的数据库表类型、索引和优化查询的工作。这是一个值得一书的主题,但仅仅阅读索引是如何工作的,阅读一些关于 SQL 查询优化的文章,就会产生奇迹。
    猜你喜欢
    • 2019-02-27
    • 2021-03-06
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多