代码 > 在nodejs中使用vm
2015-04-21
最近在做基于Nodejs的mud客户端。考虑到安全性问题,需要用到VM。
一开始没考虑透彻怎么使用vm来隔离代码。
参考了下sandbox的代码。终于i想通了。
说到底,先要构建一个content上下文。
然后把所有的接口,做一个闭包,加入content中。
比如,原先是api.method,那么现在应该这样:
content.method=function(){api.method.apply(api,arguments
)}
要么你把整个函数都替换掉,要么拉倒。
不能把对象本身暴露给vm,只暴露封装过的。
这样应该没问题吧?js里没法把function闭包中的内容再反向去出来吧?
sandbox那样还需要另开一个chlidprocess,再通过stdin/stdout来沟通,似乎对我的应用太重了点。
作为一个本地程序,添加太多的processer似乎太不礼貌了
点击登录