【问题标题】:Is typeorm querybuilder select, orderBy, groupBy are SQL injection safe?typeorm querybuilder select, orderBy, groupBy SQL注入安全吗?
【发布时间】:2022-10-15 13:13:44
【问题描述】:

如果 TypeORM 查询生成器 select、orderBy 和 groupBy 不是 SQL 注入安全的,如何将它们转换为 SQL 注入安全的?

qb.orderBy(
      `incident.${query.sortColum}`,
      query.sortOrder === 'desc' ? DESCENDING : ASCENDING,
    );

qb.select([
  `incident.${query.type}`,
  `COUNT('') As "count"`,
  `"incident"."locationGroupIds"[${level}] as groupId`,
]);

qb.addGroupBy(`incident.${query.type}`);

【问题讨论】:

    标签: postgresql nestjs typeorm sql-injection


    【解决方案1】:

    这些元素不能绑定到 JDBC 中,这就是 TypeORM 不支持将它们作为参数化查询的原因。

    有两个选项可以安全地执行此操作 - 理想情况下,您应该同时使用这两个选项:

    • 通过肯定/白名单验证来验证这些列。应检查每个列名是否存在于关联的表中。
    • 您应该为列名加上引号 - 在列周围添加单引号。如果您这样做,您需要小心验证名称中没有引号,并错误输出或转义任何引号。您还需要注意,添加引号会使名称区分大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2015-03-18
      • 2023-04-10
      相关资源
      最近更新 更多