nodejs让用户有执行js代码的权限,需要注意什么?
我目前需要做一个功能,可以让用户执行一个js代码片段。这个js片段是nodejs运行的。
使用eval(code),那么一细想,发现安全隐患还是挺大的。比如我把数据库密码什么的都放到一个配置文件里面。
他如果执行了
console.log(appConfig);
这种代码,等于知道我所有的配置了。类似的安全性问题,防不胜防。有没有一个参考的案例,我想看他们是如何解决类似的问题的。
-----------补充--------------
没想到一阵搜索,还真有类似的项目,这个叫做js沙箱。搜索“sandbox”
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己整理了一下答案:
nodejs提供了vm模块,相当于一个沙盒模式。我试了运行一段代码,比如
比如我担心用户会制造一段代码,读取服务器某些文件,但是测试发现会报错:
所以不必担心引入其他的包。
我测试读取了我的一个全局变量。
比如
是读取不到信息的。
目前来看,安全性还可以。
参考资料:
http://nodejs.cn/api/vm.html
http://blog.csdn.net/zccz14/a...
这个确实很危险,即使你过滤一些很敏感的执行方法,还是有很大的风险的,什么场景下会有这样的需求呢?