类型规范查询构建器SELECT、ORDER BY、GROUP BY SQL注入安全吗?

qjp7pelc  于 2022-10-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(119)

如果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}`);
8mmmxcuj

8mmmxcuj1#

这些元素不能绑定到JDBC中,这就是为什么TypeORM不支持将它们作为参数化查询。
有两个选项可以安全地完成此操作-理想情况下,您应该同时使用这两个选项:

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

相关问题