介绍
在nodejs中使用sequlize库来查询mysql数据库, 提供了常用的方法有两种:
- 直接查询sql语句:
sequelize.query()
; - 通过接口,如
Project.findAll()
;
- 直接查询sql语句:
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>&