在C#中通过Internet更新安全可靠的方式

时间:2009-10-12 23:45:11

标签: c# wpf security auto-update

最安全,最安全的方法是允许软件自动更新,而无需打开太多漏洞以使黑客能够轻松访问系统?

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

我建议不要构建自己的自动更新,如果适用,请使用ClickOnce,否则使用商业自动更新组件。

如果您想查看所涉及的内容,我前一段时间写了一篇关于在我的博客上编写自动更新组件的系列文章,最后一篇帖子包含该系列中所有帖子的链接:http://www.nbdtech.com/blog/archive/2007/08/07/How-To-Write-an-Automatic-Update-System-Part-8.aspx < / p>

答案 2 :(得分:0)

如果您要创建自己的系统,那么您可能希望拥有公钥/私钥对。

因此,您可以压缩更新。

然后使用服务器上的私钥进行加密。

然后客户端可以对其进行解密和解压缩,然后进行安装。

这样,只要您的私钥是安全的,那么您可以确保更新是合法的。

这里唯一的缺点是,如果有人将公钥更改为其他密钥,那么他们可能会误认为该程序认为特洛伊木马是有效的更新。

您可以使用各种方案来解决这个问题,但这取决于您希望将多少工作投入到此中。

答案 3 :(得分:0)

ClickOnce自动更新是公平和良好的,但任何人都可以承认它不是最时尚的解决方案。我最近开发了一种需要这种自动更新功能的解决方案。以下列出了我为部署自己的更新服务所采取的简要步骤,该服务还允许使用“最小”专有技术进行回滚。

  1. 将一个安装项目添加到解决方案中,以便项目可以整齐地包装在.exe或.msi安装程序包中。

  2. 以下是使用您所需的用户凭据设置一个只有您的应用程序知道的FTP服务器。在ftp服务器上,设置一个默认目录,用于放置任何新更新。

  3. 您的应用程序将在启动时检查互联网连接,登录远程FTP服务器并检查是否有要下载的新文件。

  4. 将新更新下载到客户端应用程序并将其放在日期时间命名文件夹中以供将来参考。需要进行一些检查以确保您不下载相同的旧文件。

  5. 关闭应用程序并运行新安装。根据您设置安装项目的方式,安装向导可能会完全删除以前的版本,或者只更新部分版本(补丁等)。

  6. 您的应用程序可能具有回滚到以前版本的功能,方法是进入本地更新目录并删除以前下载的文件。这是日期时间戳记文件派上用场参考的地方。

  7. 此解决方案提供了我认为大多数企业解决方案所需的自定义级别,并且我发现它对我来说非常有效。就涉及文件下载而言,FTP服务器是安全可靠的。你可以在互联网上找到很多FTP下载帮助库,这样就可以按照你想要的方式进行工作,而不用担心它是如何工作的。