[英]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 方法來保護文字塊中的變量?
你可以使用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
您可以使用replacements
和?
避免 sql 注射:
sequelize.query(`"foo".name ILIKE '%?%'`,
{ replacements: [myVar], type: sequelize.QueryTypes.SELECT }
)
嘗試
description = {
$like: sequelize.literal(`${myVar} ESCAPE '\\'`)
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.