2010-08-25 68 views
1

我有一个应用程序(exe)使用一些强命名的dll。如果我理解正确,没有人可以用他们自己的准备版本替换dll,因为它们不会被签名。没有人可以替换这个exe,因为它是通过签署清单来保证的。ClickOnce应用程序的安全

但是,如果有人准备自己的exe文件并更改清单文件中的签名呢?

回答

2

如果有人可以重新编写清单文件,请将其替换为他们所选择的exe,并用他们自己选择的替换他们想要的任何dll,然后所有投注都将关闭。

请记住,唯一的人能够sign the manifest as you,应该是你。如果其他人可以访问您的私钥,那么他们可以轻松地做到这一点。您的用户确实需要知道,他们应该阅读屏幕上显示的任何信息,说他们正在运行的应用程序谁已在上签名。安全性和链中最薄弱的环节一样好,可悲的是,这通常是用户。

你有没有想过ClickOnce的应用程序每次运行时从源代码下载,而不是在用户PC上缓存。那至少是部分缓解?

+0

签署该应用程序的信息仅在开始安装之前。之后,当运行已经使用ClickOnce安装的应用程序时,没有关于这个的信息。即使有,它也可能已经由人员准备,他们更改了清单和exe文件。我对吗?在运行已安装的应用程序之前,用户如何验证? – prostynick 2010-08-25 09:57:30

+1

他们无法验证我是否知道 - 我想你可以在代码中运行检查,但只要有人替换了'.exe',所有投注都会关闭。 – Rob 2010-08-25 10:00:12

+0

@prostynick,感谢您接受的答案,对不起,如果它不是你以后的答案! =)你有没有想过ClickOnce的应用程序是从源代码下载的*每次运行它,而不是缓存在用户的PC上。这至少是部分缓解=) – Rob 2010-08-25 13:46:16