提问人:WeAreDoomed 提问时间:2/9/2023 更新时间:2/9/2023 访问量:99
使用 Sequalize.Op.eq 是否可以防止 sql 注入,或者是否也应该对输入进行规范化?
does using Sequalize.Op.eq prevent sql injections or should input also be normalized?
问:
我正在使用 nodejs、express 和 sequlize 来显示表单并将其保存到数据库中。由于我是后端的新手,我想确保保存到数据库的数据是安全的。
如标题所述,是否足以用于防止 SQL 注入,或者是否也应该使用其他技术(例如规范化)?Seqlelize.Op.eq
该应用程序所做的是处理用户输入的“错别字”,并强调不正确的用法,并解释为什么是错误的。
因此,将保存到数据库的数据会有所不同。
这是我当前使用的代码
async function addStringToTable(string, uuid) {
// Save the input string to the database
try{
await UserText.create({
userText_field: { [Sequelize.Op.eq]: string },
uuidv4: { [Sequelize.Op.eq]: uuid }
});
} catch (e) {
console.log(e);
}
}
另外,我还需要注意什么吗?
谢谢
答:
2赞
Edward
2/9/2023
#1
这就是ORM的美妙之处。即使不使用额外的语法。基本上,只是写作就等同于你的语法
await UserText.create({
userText_field: { string },
uuidv4: { uuid }
});
这会自动阻止 sql 注入。它等效于准备好的查询,在编写原始 sql 查询时会用到它。但是对于 sequalize(以及我知道的任何其他 ORM),它都是在每次查询时自动完成的,不需要特殊的语法。您还可以通过记录此均衡化代码输出的查询来确认
评论
0赞
WeAreDoomed
2/9/2023
谢谢,只是问确定一下,你是说我根本不需要吗?Sequalize.Op.eq
1赞
Edward
2/9/2023
@WeAreDoomed 是的,它根本不需要,产生与你相同的结果。任何使用 Sequalize 编写的代码都将受到保护,不会被 sql 注入
0赞
Edward
2/9/2023
@WeAreDoomed Oh 1 快速校正,直接定义时,不需要对象大括号{}。只需写userText_field:字符串即可。如果这回答了您的问题或您感兴趣的任何其他内容,请告诉我
0赞
WeAreDoomed
2/9/2023
呵呵,我还有很多其他问题,但我认为涵盖了这个问题,谢谢:)
下一个:原生sql查询-SQL注入攻击
评论
WHERE