【发布时间】:2017-10-31 13:00:26
【问题描述】:
我正在使用带有 Node.js/Express 的 Sequelize,但我不确定如何在 where 部分使用 Sequelize 进行转义。
var sequelize = ...;
var productId = 5; var productName = "test";
var product = sequelize.define('product',findAll({
where: {
$or: [
{productId: this.mysql.escapeId(productId)},
{productName: {$like: this.mysql.escapeId('%' + productName + '%')}},
]
}
})
.then(result => ...);
这不起作用,我得到以下查询:
SELECT `productId`, `productName` FROM `product` AS `product` WHERE (`product`.`productId` = '`5`' OR `product`.`productName` LIKE '\'%test%\'' ORDER BY `product`.`productId` ASC
这没有给我任何结果。 那么如何使用 Sequelize 逃脱呢?我也尝试了函数 Sequelize.escape,但出现错误“TypeError: Sequelize.escape is not a function”。
如果由于 Sequelize 不需要转义这些值,我不明白它如何在 SQL 注入攻击中保持安全。 示例:productId = '5;从某事中删除 *;'
非常感谢您的帮助!
祝你有美好的一天,
凡妮莎
【问题讨论】:
标签: sql escaping sequelize.js code-injection