验证和许可我的加载项程序

Authenticating & Licensing my Add-in program

我已经为我想根据每年的订阅向客户销售的商业程序创建了一个插件。我一直在努力思考什么是安全方便地验证我的插件的最佳方法,但没有成功。

要求

环境

担忧

我知道这是一个宽泛的问题,但我还需要就此涉及的不同方面给出宽泛的答案。有人可以指导我什么是好的设置,或者指导我到一个描述这个的网站吗?人们会认为这是非常典型的。我找不到任何东西。

多个 attempts/offline 工作的问题可以解决,例如通过为插件的请求颁发一个在有限时间(比如 1 周)内有效的令牌("temporary" 密钥)。所以用户得到 1 周的 "grace period",当他可以工作时 "offline"。如果在此期间内插件将无法连接到 Internet 以获取更新的令牌,那么它会阻止自己直到获得新令牌。示例 - Office 365,"grace period" 为 1 个月。

即如果可能,插件会向许可证服务器发送一个包含一些唯一用户 ID 的请求(例如您提到的应用程序 url,或者任何唯一标识您的客户端的内容),服务器搜索您的许可证数据库并发回一个(加密的)令牌包含许可证结束日期和所需的令牌刷新日期(当前服务器日期 + 1 周)

要加密,我认为您应该选择 "private/public key setup".. 为什么要避免这种情况 - 这似乎非常合理,并且在 .NET 中实施起来并不难。 IE。使用 private/public 密钥你至少可以确保没有人能够 "emulate" 你的服务器,只要你在你的许可服务器上保密你的私钥。

此外,请注意可能没有人会破解加密通信,因为破解插件本身要容易得多(它是 .NET 代码,对吗?)。我认为这个问题可能不会得到解决,而且可能是最大的问题。 IE。恶意用户只需删除插件代码中的许可证检查即可,仅此而已。但无论如何,这假设用户至少有一些破解程序代码的经验。

再考虑一下 - 如果您不打算自己销售插件(例如,处理客户订单、信用卡、进行欺诈检查等),您最好选择一些 "eCommerce" 专门从事在线销售软件的合作伙伴公司,如 paypro、avangate、bluesnap、2checkout 等。它可能已经有许多预定义(固定)许可供您选择。