刚才想弄一个博客系统,就在设计数据库结构时突然想到,用户在后台发布文章时,文章可能会带有各种不同的字符,这些字符若处理不当可能会造成注入现象的发生。
于是查了下有关于 MongoDB 的注入,没想到还真有:
http://www.freebuf.com/articles/web/106085.html
不过案例上用的是 PHP ,我按照相关关键词查了下好像查不到 Node.js 的案例。
自己想解决掉注入的问题,但我在 npm 查了跟 escape string 有关的关键词找了大半天就是找不到相关的轮子可用。
不知道哪位有经验的能提供下解决方案吗?谢谢。
补充:自己目前用的 MongoDB 库是 monk
,不知道有没有自带一些防注入的安全措施?
1
jybox 2017-01-14 14:38:17 +08:00
|
2
Kilerd 2017-01-14 14:52:35 +08:00
ORM 啊.
|
5
DoraJDJ OP @ryd994 不过我查过资料 MongoDB 好像是 ODM , ODM 和 ORM 有什么差异吗?
|
6
nullzz 2017-01-14 18:22:49 +08:00 via iPhone
从 cnodejs 的 mongodb 注入来看, nodejs 和 php 一样支持参数数组传参,即 req.query.id 获取到的值可以是个数组比如请求 index?id[$regex]=1 后端获取到的 id 值为{"$ne": 1}
限制你请求的参数的值只能为字符串,就不可能注入 |
7
DoraJDJ OP @nullzz 刚才我简单地用 Koa 整了一个试验环境,照你这样做好像并没发生什么
用 koa-router 写了个路由 router.get('/testing', function *(next) { var str = this.query.value; if (!str) { this.body = 'Invaild'; } else { this.body = str; } }); 然后我尝试请求 /testing?value[$val]=233 ,返回的是 Invaild |
8
DoraJDJ OP @DoraJDJ 把 str 的声明改成 this.query 后返回的结果是: {"value[$val]":"233"}
|
9
nullzz 2017-01-14 18:36:17 +08:00 via iPhone
看样子我理解有误,有意思,看下这个 http://static.hx99.net/static/bugs/wooyun-2015-0112230.html
|
13
DoraJDJ OP |