【发布时间】:2021-04-13 16:33:04
【问题描述】:
我编写了一些希望出售给最终用户的软件,并且正在调查许可证服务器。 Keygen-sh 在他们的网站 (https://keygen.sh/docs/validating-licenses/) 上提到了当用户在尝试使用 keygen 的服务器验证他们的许可证时要做什么。我对选项三感兴趣:
验证请求失败,例如超时
失败可能是因为 原因有很多,但最可能的罪魁祸首是您的用户 没有有效的互联网连接。你可以处理这个 方法多种多样,但这里有一些想法:
开始宽限期(例如 30 天或 5 次额外的产品使用), 如果许可证验证有,则您不允许访问该产品 在那个时间范围之后没有成功。你应该清楚地告诉你 用户应该尽可能连接到互联网并 提前了解宽限期。
立即禁止访问 产品。这应该小心使用,不推荐,除非 您的产品依赖于有效的互联网连接。
回退到 如果您以加密方式使用,则离线许可证密钥验证 签名或加密的许可证密钥(有关更多信息,请参阅 API 参考 信息)。
在选项 1 的情况下,我应该如何检查自上次活动互联网连接以来是否已过去 30 天?如果我将最后日期存储在 .txt 文件中,他们可以简单地删除该文件。
这让我想到了选项 3。但是密码检查如何验证过期?代码 (https://github.com/keygen-sh/example-python-cryptographic-verification) 似乎没有使用系统时间。
我知道我无法阻止我的软件被破解。但它不应该像删除文件或切断互联网连接那么容易。假设他们不会篡改系统时间,也不会反编译我的代码。
【问题讨论】:
-
选项 1:是的,他们可以删除它,这就是“提前”的意思。选项 3:您的加密签名许可证必须包含过期时间戳,是的,您必须将其与以某种足够安全的方式获得的当前时间进行比较。