0

我们的客户必须按月支付费用......如果他们不这样做,阻止 asp.net 软件使用的最佳方法是什么?注意:该应用程序在客户端自己的服务器上运行,它不是 SaaS 应用程序...

我的想法是:

想法:在互联网上托管一个 Web 服务,应用程序将使用它来了解客户端是否可以使用该软件。 问题 1 - 如果客户端 Internet 出现故障会怎样?还是数据中心出现故障? 可能的答案:让每个Web服务访问发送一个有效期为7或15天的密钥,因此每个Web服务咨询将使软件运行更多7或15天,这样应用程序将在7或15之后才被锁定几天没有咨询我们的网络服务。 问题 2 - 如果客户端没有或不想启用对应用程序的 Internet 访问?

想法 2:每月向客户发送一个密钥。 问题- 如何制作离线密钥? 可能的答案:使用“限制”日期生成哈希,因此每次登录尝试软件都会将今天的哈希与密钥进行比较? 问题 2 - 在哪里存储密钥? 可能的答案:数据库(不好,太容易更改),文本文件,注册表,代码文件,程序集......

任何意见将不胜感激!

4

5 回答 5

8

啊,DRM 的古老问题。这就是你在这里所说的。坦率地说,你的问题的基本答案是:你不能。无论您对系统做什么,它都可能被黑客入侵和修改,从而可以绕过和/或破坏您的 DRM 身份验证方案。

这是软件开发的一个基本事实:它可以并且将会被盗版。

因此,您的问题的答案是,您必须相信客户会向您支付您认为正确的费用(在这种情况下,这是合同的全部意义)。

您采取的任何其他行动都会给您的付费客户带来困难和烦恼,并有可能侵蚀您的客户群。

现在,如果您想以所描述的性质控制您的软件,那么不要将其提供给用户在他们自己的服务器上运行。强迫他们成为SaaS。这样,您就可以控制所有这些。但这是唯一的方法。

您似乎没有考虑过的事情,但我已经看到不允许任何类型的“拨号回家”解决方案的网络,因为大多数系统都集中在内部,因此这些内部服务器不允许联系外网。完全没有。甚至允许他们访问被认为是一种安全风险。您将如何处理这些网络?

坦率地说,如果我是客户,并且我支付了许可您的软件(我安装在我自己的设备上)的费用,如果我不得不允许该设备访问互联网以使其工作,我会很生气。如果有问题的软件是任何类型的财务管理、客户管理、人力资源管理、质量管理、库存管理、销售或与我的业务、客户或员工相关的任何东西,那就更是如此。当我的业务相关数据保存在他们的软件中时,我不信任软件开发人员让他们的软件与其他东西对话。

最后,您所描述的是与您的付费客户采取的对抗方法。如果您不相信我,请查看 UbiSoft 对他们最新的讨厌客户的 DRM 计划的评论。

IMO,您在这里有两条好路:

  1. 去SaaS
  2. 确保您的合同对未付款有影响
于 2010-02-26T20:43:29.203 回答
3

通常,您提供一个加密密钥,其中包括有效的授权令牌和支付服务的到期日期。然后安装程序将使用它来“激活”您的软件。如果您有 1-2 周的周期,不确定如何看待这一点。您想警告他们即将到期。也不知道如何判断他们是否把自己的时钟调​​回来了。

简而言之,没有什么是完美的。

于 2010-02-26T20:18:14.180 回答
0

我同意斯蒂芬的观点,但最终,我认为你的合同是你最好的盟友。

如前所述,您不想给客户带来不便,尤其是在您进行大型部署的情况下。

至于SaaS,如果我是使用您产品的客户,而您说模型正在改变,我们需要从您的服务器访问软件,而我们的软件必须停用,我会不高兴。我可能会利用这个机会换包。

于 2010-03-17T18:34:00.210 回答
0

在公司环境中,合同确实是处理这些问题的最佳方式。我曾处理桌面和 ASP.NET 应用程序的许可问题,它们可能会给您和您的客户带来许多麻烦。

但是,如果您坚持使用这样的东西,我建议您采取中间立场。与其只解锁应用程序一两个星期,不如提供 6 个月或一年的许可证。这样,如果您遇到许可问题(并且您会遇到问题),它们每年只会发生一次,而不是每月发生几次。这对您来说会更便宜,而且您的客户对处理许可问题的不满也会减少。如果公司停止付款并且您需要终止许可证,您可以一次性处理,根据需要使用合同执行。

在 Web 服务或客户端许可选项上,我认为一个好的许可系统将两者结合起来。客户端许可证用于为应用程序提供稳定的许可证和 Web 服务,以便在应用程序更新时生成和交付许可证密钥。如果客户端不允许应用程序调用 home 获取许可证密钥,也提供手动输入方法。

如果您要在客户端上存储许可证,请不要尝试自己构建组件。有许多可用的组件将比您构建的组件更加强大和可靠。有一种基于 .NET .licx 的许可方法和许多您可以使用的第 3 方方法。哪一个最合适取决于您的场景:您希望许可证有多灵活以及您需要哪些其他选项。最重要的是,找到可靠的东西 - 任何时候您的客户花在解决由许可引起的问题对他们来说都是非生产性的,并且会对应用程序产生不良影响。

要记住的重要一点是,没有系统是万无一失的。如果您的应用程序很有价值,那么有人会想办法窃取它。但在企业层面和定制软件中,授权更有可能用于提醒人们付费,而不是阻止批发盗版。

于 2010-03-17T19:50:14.670 回答
0

我以前处理过这个问题,不可能做出一个完美的系统。你做的任何事情都有风险。最好的办法是权衡您的选择,并确定最不可能被黑客入侵和最有可能为客户正确、轻松地工作的方法。

就像其他人所说的那样,他们可以更改时钟并使许可证检查机制无效。如果您不信任该用户,您可以让许可系统连接到您的服务器。然后,您需要确保他们始终连接到您的服务器以检查许可证。

如果他们有正当理由无法访问您的服务器怎么办?

  • 他们的互联网连接有问题。
  • 您的互联网连接有问题。

在这种情况下,您是否应该禁用该应用程序?可能不是。但是话又说回来,如果他们故意关闭连接怎么办?然后你会想要禁用该应用程序。

如果你给他们每月的钥匙,你就会增加每月的烦恼,一段时间后你可能会失去一个客户(人们倾向于与那些让事情变得容易的人做生意)。

例如:如果您基于他们的时钟,并且应用程序出于某种原因需要他们的时钟准确,那么客户不太可能更改他们的时钟。

于 2010-03-11T16:29:37.007 回答