类型查询生成器select、orderBy、groupBy是否是SQL注入安全的



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

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

有两种选择可以安全地做到这一点——理想情况下,你应该同时使用这两种方法:

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

最新更新