我需要了解如何在 NodeJS sequelize ORM 上防止 sql 注入
I need to know about prevent sql injection on NodeJS sequelize ORM
我是初学者nodejs sequelize ORM。我想知道如何防止 sql 注入 NodeJS sequelize ORM。
例子
我有一条类似 http://localhost:3000/admin/video/edit/5
的路线,控制器看起来像
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
await Movie.findOne({ where: { id: editInfoId } }).then((movie) => {
if (movie) {
res.render('admin/movies/edit', { title: 'Edit Movie On Page One', movie });
}
});
},
现在我需要知道如何保护数据库免受 SQL 注入?
表明 { where: { id: editInfoId } }
您已经避免了 SQL 注入,因为 Sequelize 将 id
值视为静态字符串,将其作为参数传递给基础 SQL 查询。
使用 where
选项,而不使用任何 SQL-查询片段,当其中一些片段从不受信任的来源传递时,从字符串连接起来将是避免 SQL 注入的良好开端。
尝试只使用简单的类似 object
的条件(就像您在上面所做的那样)或使用 Sequelize.Op
.
中的一些运算符组合
我是初学者nodejs sequelize ORM。我想知道如何防止 sql 注入 NodeJS sequelize ORM。
例子
我有一条类似 http://localhost:3000/admin/video/edit/5
的路线,控制器看起来像
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
await Movie.findOne({ where: { id: editInfoId } }).then((movie) => {
if (movie) {
res.render('admin/movies/edit', { title: 'Edit Movie On Page One', movie });
}
});
},
现在我需要知道如何保护数据库免受 SQL 注入?
表明 { where: { id: editInfoId } }
您已经避免了 SQL 注入,因为 Sequelize 将 id
值视为静态字符串,将其作为参数传递给基础 SQL 查询。
使用 where
选项,而不使用任何 SQL-查询片段,当其中一些片段从不受信任的来源传递时,从字符串连接起来将是避免 SQL 注入的良好开端。
尝试只使用简单的类似 object
的条件(就像您在上面所做的那样)或使用 Sequelize.Op
.