我需要了解如何防止 NodeJS 上的 sql 注入 sequelize ORM

Posted

技术标签:

【中文标题】我需要了解如何防止 NodeJS 上的 sql 注入 sequelize ORM【英文标题】:I need to know about prevent sql injection on NodeJS sequelize ORM 【发布时间】:2021-11-17 23:31:50 【问题描述】:

我是初学者nodejs sequelize ORM。我想知道如何防止NodeJS sequelize ORM上的sql注入。

例子

我有一个类似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 注入?

【问题讨论】:

【参考方案1】:

表明 where: id: editInfoId 您已经避免了 SQL 注入,因为 Sequelize 将 id 值视为静态字符串,将其作为参数传递给底层 SQL 查询。

使用where 选项,当其中一些从不受信任的来源传递时,不使用任何从字符串连接的 SQL 查询片段将是避免 SQL 注入的良好开端。

尝试仅使用简单的object 类条件(就像您在上面所做的那样)或使用来自Sequelize.Op 的一些运算符组合。

【讨论】:

以上是关于我需要了解如何防止 NodeJS 上的 sql 注入 sequelize ORM的主要内容,如果未能解决你的问题,请参考以下文章

pg数据库like防止sql注入

如何防止不和谐机器人python中的SQL注入攻击

Dapper 和 SQL 注入

使用 nodejs 应用程序上的刷新和访问令牌了解身份验证流程

使用“database/sql”时如何防止 Go 中的 SQL 注入攻击?

无法连接到 Nodejs EC2 服务器上的 SQL Server 数据库