考虑以下要求
什么是从web应用程序中分发软件的最佳策略,其中包含适当的令牌?(不应要求用户输入令牌。)
当用户单击web应用程序中的下载软件按钮而不是给出软件时,我们生成一个VBScript文件,其中包含软件包的令牌和下载位置,并将其作为下载交付。之后,当用户调用脚本时,将发生以下情况。
Windows世界会接受上述解决方案吗?他们觉得这不自然吗?手边的问题有更好的解决办法吗?
发布于 2015-04-03 10:37:15
您肯定从其他软件供应商看到的标准解决方案是:
通过该过程,用户身份验证后,令牌将以许可证文件的形式下载。如果您想让用户在没有新身份验证的情况下将软件安装在第二台计算机上,则允许将许可文件复制到另一台计算机。您写过“用户不应该被要求输入令牌”--但实际上,如果用户必须将VBS文件复制到第二台计算机,或者必须复制许可证文件,那么他的区别在哪里?
请注意,这并不妨碍您的用户将软件连同许可文件一起分发给另一个人,但是由于您自己的方法也不能阻止这一点,我想您并不是在寻找解决该问题的方法。
另一种方法是不使用VBS,而是以exe文件的形式生成个性化的下载程序(提供C或C++源代码并不难,只需修改一个小代码文件,然后由web服务器实时编译)。至少这禁止普通用户使用像记事本这样的简单文本编辑器进行修改,这对于VBS下载程序来说是可能的。你也不必教你的用户如何运行一个VB脚本。
如果你真的想提供个性化的安装包,还有第三种选择。可以动态地生成或重新生成MSI包,因此您可以为每个下载替换MSI包中的个人令牌文件。这是如此的帖子包含有关这方面的一些信息,并向这里展示了如何在压缩的MSI中替换单个文件。这可能是你的案子最顺利的解决方案。
发布于 2015-04-03 08:43:30
下载要运行的脚本- VBScript或Javascript -总是听起来很可疑,特别是因为有太多的害群之马滥用这些东西来安装恶意软件。你不想训练任何人使用你的程序来信任、下载和使用这样的脚本。
不幸的是,我想不出任何安全的火&忘记这方面的解决方案,它不会包括可能的安全漏洞(就像有人无意中将令牌作为安装程序包的一部分传递给同事)。
理论上,您可以安装一个浏览器插件来充当web应用程序和本机程序之间的身份验证/通信桥梁(类似于EA对较新的战场游戏的Battlelog插件所做的操作),但即便如此,这也不是什么完美的东西。
因此,我仍然强烈建议您使用(一点点)更有侵扰性的方式,并在安装程序后向用户询问登录详细信息。请记住,您可能也想要某种方式来撤销令牌(即使它只是由于被偷的机器所致)。
发布于 2015-04-03 14:34:22
您可以将用户的令牌嵌入安装程序的文件名中,并将代码放入安装程序中以检索它,尽管我不确定我是否真的推荐它。
为了证明不是我编的,索弗斯反病毒就这么做了。不出所料,他们的最常见的安装问题列表中的第一位是“重命名安装程序文件名”。但我认为这样做的好处是,由于它们根本不修改安装程序的内容,所以分发它的服务器不需要访问签名它的私钥。
无论如何,一般的原则是,对于严肃的软件,您可能希望在最安全的位置上发布一个签名的可执行文件,以及一个由某个面向公共的web服务器动态生成的未签名令牌。如果您不想让用户下载两个文件,复制粘贴令牌或其他类似的东西,那么文件名就是您唯一可以与之通信的部分。
将令牌放入未签名的代码中,以便在用户的机器上以完全的用户权限运行,甚至只是一个脚本,这样做完全违背了对安装程序签名的目的。如果您想要走这条路线,那么您几乎可以分发一个未签名的安装程序,并将用户的令牌修补到其中。对于极小比例的极客用户来说,一个非常简单的VBScript不需要签名,因为它可以被眼睛验证为没有恶意。但是他们并不多,所以“几乎”是“非常接近”。
https://softwareengineering.stackexchange.com/questions/278149
复制相似问题