我正在更密切地关注.NET Core,而我似乎没有找到任何关于如何应用安全更新的信息?
如果我的应用程序的所有程序集都与Windows Update分离,如果组件有安全补丁,我该如何更新它们?
当您使用操作系统附带的框架时,您只需更新一次,但如果您有一堆网站,我需要分别更新每个网站吗?我假设它都需要从我的原始源开始,在那里进行更新然后重新部署所有内容,因为如果我只是通过命令行更新部署,而我不对我的源做同样的事情,我'再次重新部署不安全的位。
答案 0 :(得分:4)
无论如何,您将始终必须执行此操作,因为系统更新只会影响运行时,而不会影响您的应用程序引用来自nuget或其他来源的程序包。
两种版本的.NET核心
便携式应用程序就像您在.NET Framework中使用的那样。您安装了运行时/ SDK,并且您的应用程序仅引用这些核心集,但不会将它们与您的应用程序一起部署。
更新运行时就足够了。优点是较小的部署包。缺点是您需要在部署之前在系统上安装正确版本的运行时。
另一方面的自包含应用程序不需要已安装的运行时,并将使用该应用程序部署必要的系统库。
这里的优点是,您可以部署应用程序并并行运行多个应用程序,这些应用程序使用它们编译的库,而不会产生框架或运行时更新的副作用。
缺点是,更大的规模和缺乏修复和安全更新的中央更新机制。
但最终问题仍然存在。当您的某个非.NET-Framework依赖项升级或接收安全修复程序时,这两种风格都不能解决问题。
因此,对于这两种版本,仍然需要使用更新的库集重建/重新部署应用程序,并且使用旧的.NET Framework需要它。
要升级旧版应用程序或版本,您应该使用源代码管理系统。使用里程碑/版本的标签,因此您可以随时查看标签升级它的依赖项并提交+部署它。
.NET Core也可以与docker一起使用,因此当您使用像Rancher这样的Docker编排工具时,部署应该很容易。
最重要的是,特定的库(如加密)不是通过NuGet / .NET Core Runtime发布的,只是它们的包装器。例如,Cryptography对Windows上的CryptoAPI和Linux / MacOS上的OpenSSH具有本机依赖性。当一个错误在OpenSSH中修复时,系统更新机制(即apt-get等)将涵盖这个错误。