nodejs让用户有执行js代码的权限,需要注意什么?

发布于 2022-09-06 03:45:45 字数 435 浏览 8 评论 0

我目前需要做一个功能,可以让用户执行一个js代码片段。这个js片段是nodejs运行的。
使用eval(code),那么一细想,发现安全隐患还是挺大的。比如我把数据库密码什么的都放到一个配置文件里面。

他如果执行了

console.log(appConfig);

这种代码,等于知道我所有的配置了。类似的安全性问题,防不胜防。有没有一个参考的案例,我想看他们是如何解决类似的问题的。

-----------补充--------------

没想到一阵搜索,还真有类似的项目,这个叫做js沙箱。搜索“sandbox”

比如这个项目:https://www.npmjs.com/package...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猥琐帝 2022-09-13 03:45:46

自己整理了一下答案:
nodejs提供了vm模块,相当于一个沙盒模式。我试了运行一段代码,比如

var code = `console.log(require('fs'));`
//console.log(eval(code));
vm.runInContext(code, sandbox);

比如我担心用户会制造一段代码,读取服务器某些文件,但是测试发现会报错:

因为他们的沙盒中根本就没有这个require函数,就没有办法加载包,更不会加载一些危险的包,如vm与fs。

所以不必担心引入其他的包。

我测试读取了我的一个全局变量。

比如

console.log(appConfig);

是读取不到信息的。

目前来看,安全性还可以。

参考资料:

http://nodejs.cn/api/vm.html

http://blog.csdn.net/zccz14/a...

欢烬 2022-09-13 03:45:46

这个确实很危险,即使你过滤一些很敏感的执行方法,还是有很大的风险的,什么场景下会有这样的需求呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文