什么是允许软件自动更新而不打开太多漏洞以使黑客轻松访问系统的最安全和最安全的方法?
4 回答
您是否研究过 ClickOnce 部署?
http://msdn.microsoft.com/en-us/library/t71a733d(VS.80).aspx
简短的概述在这里:
http://msdn.microsoft.com/en-us/library/142dbbz4(VS.80).aspx
我建议不要构建您自己的自动更新,如果它适合您,请使用 ClickOnce,如果不适合,请使用商业自动更新组件。
如果您想查看其中涉及的内容,我前段时间在我的博客上写了一个关于编写自动更新组件的系列,最后一篇带有该系列所有帖子链接的帖子位于:http ://www.nbdtech.com /blog/archive/2007/08/07/How-To-Write-an-Automatic-Update-System-Part-8.aspx
如果您要制作自己的系统,那么您可能需要一个公钥/私钥对。
所以,你会压缩更新。
然后用服务器上的私钥加密。
然后客户端可以解密并解压缩它,然后安装它。
这样,只要您的私钥是安全的,那么您就可以确保更新是合法的。
这里唯一的弱点是,如果有人将公钥更改为其他密钥,那么他们可能会欺骗该程序,使其认为特洛伊木马是有效的更新。
您可以使用多种方案来解决此问题,但这取决于您要为此投入多少工作。
ClickOnce 自动更新很公平,但任何人都可以承认它不是最时尚的解决方案。我最近开发了一个需要这种自动更新功能的解决方案。这是我在部署自己的更新服务时所采取的简要步骤列表,该服务还允许使用“最少”的专有技术进行回滚。
将安装项目添加到解决方案中,以便项目可以整齐地包装在 .exe 或 .msi 安装程序包中。
以下是使用只有您的应用程序知道的所需用户凭据设置 FTP 服务器。在 ftp 服务器上,设置一个默认目录,用于放置任何新的更新。
您的应用程序将在启动时检查互联网连接,登录到您的远程 FTP 服务器并检查是否有任何新文件要下载。
将新的更新下载到您的客户端应用程序并将它们放在一个以日期时间命名的文件夹中以供将来参考。需要进行一些检查以确保您不会下载相同的旧文件。
关闭应用程序并运行新安装。根据您设置安装项目的方式,安装向导可能会完全删除以前的版本或仅更新部分(补丁等)。
您的应用程序可能具有回滚到以前版本的功能,方法是进入本地更新目录并找出以前下载的文件。这是日期时间戳文件派上用场以供参考的地方。
该解决方案提供了我认为大多数企业解决方案都需要的定制级别,并且我发现它对我来说非常有效。就文件下载而言,FTP 服务器是安全可靠的。您可以在 Internet 上找到很多 FTP 下载帮助程序库,因此只需按照您想要的方式进行工作,而不必太担心它的工作方式。