根据this page:
没有用于添加包的集中审批流程。当您将包上传到NuGet包图库(尚不存在)时,您不必等待数天或数周等待某人审阅并批准它。相反,当涉及饲料时,我们将依靠社区来调节和警察自己。这符合CodePlex.com和RubyGems.org的工作原理。
这让我感到不安。在我下载Firefox附加组件之前,我知道它不应该包含恶意代码,因为Mozilla会审查addons.mozilla.org上的AFAIK所有附加组件。在我从codeplex.com或code.google.com下载开源项目之前,我知道它应该是安全的,因为任何人都可以查看它的源代码。我也可以使用WOT(信任网)来检查其他人对该项目的看法。
但是在我从NuGet官方包源下载包之前。以this one为例。我不知道是谁制作了这个包装,也不知道包装中包含的是什么。在我看来,任何人都可以将任何东西打包到一个包中,给它任何他们想要的名字(如“Microsoft Prism”,只要不采用该名称),然后将其上传到官方包源。
我是否应该担心NuGet官方软件包源代码的安全性?
答案 0 :(得分:10)
您的不安应该适用于您从任何来源获得的软件:
也许你可以在软件中拥有一连串的信任(以二进制文件或源代码形式提供),而Nuget Package Gallery(以及CodePlex.com和RubyGems等)可能存在于不太可靠的一端。连续统一体。
这类问题有潜在的解决方案,例如可信计算平台联盟提出的问题,但它们对我们目前在开发软件和共享我们认为合适的软件时所享有的自由有很大的限制。 ,无需以高额费用从中央当局获得许可证或加密密钥。
我相信社区将提出各种惯例和机制,以确保Nuget成为.Net开发人员可靠的软件库来源,同时保持其灵活性,而不需要正式的审核流程。但是,作为用户,最终的责任在于确保您的IT安全不会受到损害,并且您采取的预防措施是在您编写的软件环境中(例如,家庭项目;银行,医疗,过程控制项目;可能很高!)
答案 1 :(得分:1)
NuGet不管理信任。即使它确实如此,你仍然需要关注信任NuGet所信任的东西。
您应该完全关注NuGet包中代码的安全性。您应该关注您不熟悉的任何代码的安全性。
我通过NuGet和NPM采用个人和专业方式使用软件包的方法如下:
例如,我现在只想在生产环境中添加它们的唯一软件包是Newtonsoft.Json和Nhibernate。我最关心的是任何人都可以发布的新开源软件包,它们实际上就像我买入之前所描述的那样工作,并且把时间浪费在不符合我需求的事情上。
我觉得如果你对软件包进行了足够的研究以确定它是否适合生产环境,你可能已经对软件及其社区有了足够的了解,以确定你是否可以相信它没有做任何恶意的事情。研究软件和它的社区对我来说真的比对一个中央权威决定的NuGet的批准印章更有意义,我们都祈祷是完美的。
答案 2 :(得分:-1)
那就是说,你应该采取预防措施。您正在使用的库可能会无意中创建漏洞。作为程序员,您可以正确地测试和选择用于构建应用程序的工具,这与确保库满足您的功能和性能要求没有什么不同。