DoraCMS目前存在的问题
今天咋cnodejs上,前端的faceair提了几个很重要的问题,我觉得很有必要优化一下
今天咋cnodejs上,前端的faceair提了几个很重要的问题,我觉得很有必要优化一下:
node_modules
就不要放在源码里面了, 有的模块需要编译, 不同的系统间不兼容可以多用mongoose的实例和静态方法, 不要在路由里面做大量逻辑操作, 也方便方法的复用
进路由的参数都没有过滤, 攻击者可以自己构造mongo查询, 返回意想不到的结果 (keyword: mongodb注入)
如上的批量删除别这么写… 可以用mongodb的$in操作符
targetObj.remove({_id: {$in: idsArr}}, callback)
其中第三条确实忽略了,后面重点处理后台参数校验问题,保障服务端安全性,mongoose的实例和静态方法我还不是很熟悉,后面要深入了解一下。
之前写的递归的批量删除是这样的:
var params = url.parse(req.url,true); var ids = params.query.ids; var idsArr = ids.split(','); var batchDel = function(targetId,n){ targetObj.remove({'_id':targetId},function(err){ if(err){ res.end(err); }else{ idsArr.splice(n,1); if(idsArr.length > 0){ for(var i=0;i<idsArr.length;i++){ batchDel(idsArr[i],i); } }else{ res.end("success"); } } });}; batchDel(idsArr[0],0);
其实 mongoose 有更简单的方式处理:
var params = url.parse(req.url,true); var ids = params.query.ids; var idsArr = ids.split(','); targetObj.remove({'_id':{$in: idsArr}},function(err){ if(err){ res.end(err); }else{ res.end("success"); } });
很赞哦! ( 0
)