欢迎您访问宜州一中 您可以登录 或注册
 
收藏本站 简繁转换
一方天地育桃李,三尺讲台竞风采             宜州区一中在宜州博物馆举行“人杰地灵读宜州”故事分享会             宜州一中举行2024届中考百日誓师大会             龙腾启新 筑梦未来 ——宜州区第一中学欢庆2024年元旦文艺晚会             走进嘉联丝厂 畅享研学之乐 ——宜州区第一中学开展研学实践活动             2023年河池市宜州区第一中学/宜州区红卫学校家庭经济困难大学新生入学资助项目发放名册(第二批)             展科技志向,圆飞行梦想 ——宜州区一中2025届举行无人机大赛             2023年河池市宜州区第一中学\红卫学校 家庭经济困难大学新生入学资助项目发放名册(第一批)             法制进校园 以法促成长 ——宜州一中举行“三姐护蕾”法治进校园活动             “英”你精彩,“语”你同行 —— 我校2025届举行英文风采大赛            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

DoraCMS目前存在的问题

doramart 2024-05-03 00:33:00 技术文档231099
今天咋cnodejs上,前端的faceair提了几个很重要的问题,我觉得很有必要优化一下

今天咋cnodejs上,前端的faceair提了几个很重要的问题,我觉得很有必要优化一下:


  1. node_modules 就不要放在源码里面了, 有的模块需要编译, 不同的系统间不兼容

  2. 可以多用mongoose的实例和静态方法, 不要在路由里面做大量逻辑操作, 也方便方法的复用

  3. 进路由的参数都没有过滤, 攻击者可以自己构造mongo查询, 返回意想不到的结果 (keyword: mongodb注入)

  4. 如上的批量删除别这么写… 可以用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");
	}
});


文章评论

取消回复
登录 参与评论

评论列表(