nodejs sequelize库防注入测试

介绍

  • 在nodejs中使用sequlize库来查询mysql数据库, 提供了常用的方法有两种:

    1. 直接查询sql语句: sequelize.query();
    2. 通过接口,如Project.findAll();
  • sequelize的第2种查询方法在实现上做了防注入处理, 但该方法使用并不是很灵活, 对于经常使用原生sql语句的人来说, 总有一种不适应, 感觉手脚被束缚; 而对于使用方法1, 则必须注意防sql注入;

这里我测试前面提到的两种查询方式如何做到初步的防sql注入功能;


sql注入

产生原因

下面的查询语句, 加入了用户输入的时间项: begin, end, 正常情况是:

begin = 20161101;
SELECT .. FROM tbl WHERE pdate>=20161101 AND ...;

而如果有人故意输入如下的参数, 则就会出现sql注入:

begin = '20161101 AND 1=1; -- hack';
SELECT .. FROM tbl WHERE pdate>&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8 JavaScript引擎的JavaScript运行环境,可以在服务器端运行JavaScript。Sequelize是一个流行的ORM框架,它提供了对多种数据的支持,包括MySQL。MySQL是一种流行的关系型数据管理系统。使用Sequelize和MySQL可以轻松地在Node.js中处理数据操作。 具体来说,Sequelize是一个使用Promise实现的Node.js ORM,支持多种数据,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。通过Sequelize,我们可以轻松地定义模型、查询数据和执行事务等操作。 在使用Sequelize时,需要先安装sequelize和mysql2这两个npm包。接下来,我们需要定义一个sequelize实例,并指定数据连接信息,如下所示: ``` const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); ``` 其中,`database`、`username`和`password`分别是数据的名称、用户名和密码,`localhost`是数据所在的主机地址,`mysql`表示使用MySQL数据。 接下来,我们可以定义一个模型,如下所示: ``` const User = sequelize.define('user', { firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING } }); ``` 这个模型表示一个名为User的表,包含两个字段:firstName和lastName。其中,firstName是必填字段,而lastName是可选字段。 定义完模型后,我们就可以使用它来查询数据了。例如,查询所有用户的firstName和lastName字段,可以使用如下代码: ``` User.findAll({ attributes: ['firstName', 'lastName'] }).then(users => { console.log(users); }); ``` 这个代码会查询所有用户的firstName和lastName字段,并将结果输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值