TypeORM里用Raw写SQL会有注入风险吗?

一家淼 阅读 17

我最近在用TypeORM的Raw函数拼接查询条件,但担心这样会不会有SQL注入漏洞?比如下面这段代码:

const users = await getRepository(User)
  .find({
    where: {
      name: Raw(alias => <code>${alias} LIKE &#039;%${keyword}%&#039;</code>)
    }
  });

虽然功能跑通了,但keyword是用户输入的,直接插进字符串里总觉得不安全。官方文档说要用参数化,但Raw里怎么传参啊?有没有更安全的写法?

我来解答 赞 15 收藏
二维码
手机扫码查看
1 条解答
上官可歆
确实有注入风险!Raw里要用参数化查询,别直接拼接字符串。安全写法应该是这样:

const users = await getRepository(User)
.find({
where: {
name: Raw(alias => ${alias} LIKE :keyword, { keyword: %${keyword}% })
}
});


这样TypeORM会帮你做参数转义。记着永远别把用户输入直接扔进SQL字符串,这习惯很危险。
点赞
2026-03-06 01:01