Sequelize:在文字字符串中转义字符串

Sequelize: escape string in a literal string

我可以在 Sequelize 中使用 literal 手动构建一个 SQL 查询部分:

sequelize.literal(`"foo".bar ILIKE '%baz%'`)

但是如果我想在这个文字块中添加一个var,我现在引入SQL注入漏洞:

sequelize.literal(`"foo".name ILIKE '%${myVar}%'`)

是否有 Sequelize 方法来保护文字块中的变量?

尝试

description = {
    $like: sequelize.literal(`${myVar} ESCAPE '\'`)
};

您可以使用 replacements? 来避免 sql 注入:

sequelize.query(`"foo".name ILIKE '%?%'`,
  { replacements: [myVar], type: sequelize.QueryTypes.SELECT }
)

您可以使用 escape:

const escapedSearch = sequelize.escape(`%${myVar}%`);
sequelize.literal(`"foo".name ILIKE ${escapedSearch}`);

参见:https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-escape