我正在编写一个C# Windows应用程序,并将提供试用版和完整版本。对于试用版,我希望为最终用户提供每日使用信用(即每天使用应用程序中的特定功能的3个学分)。
我见过许多防止系统日期篡改的文章和讨论,但我看到的所有文章和讨论都是为了提供试用期;反对将系统日期更改为以前的日期。以下是一些:
https://www.codeproject.com/Articles/1101956/Check-for-Clock-Tampering-to-Extend-Licence-Durati https://stackoverflow.com/a/16530146/3350921
但在我的例子中,我有相反的商业案例。如果用户通过快速转发到未来一天来篡改系统日期,那么只需更改日期就可以轻松地获得使用信用。很明显,我不想这样。
作为经验规则,您有什么建议吗?如何检查C# Winforms应用程序中的日期篡改,不仅是为了向后,也是为了向前方向?
Ps。我需要完全实现这个离线。NTP或外部API调用是一个很好的解决方案,但是这个应用程序可能主要用于离线客户端。
Ps2。Windows正在考虑检查Windows的特定系统文件的“最后修改时间”属性。例如,如果有这样一个Windows系统文件,每次Windows重新启动时都会更新它的“最后修改时间”,那么我觉得我可以快速地识别系统日期。有什么想法吗?
发布于 2020-01-27 16:03:51
许多评论说,在本地管理它并不是愚蠢的,用这个类比,任何开发的软件也是如此,但是我不得不承认,当你被沙箱装在本地pc上,用户可以完全控制的时候,事情就不那么容易了。
这里的问题是,您愿意添加多少层,以使其难以打破。以及该软件对环境修改的容忍度是什么,这与UX的成本有关。有很多层次的安全和最少的容忍。你已经把它硬得很好了。
我可以想到的一些安全层:
时,可以将其存储并发送回远程服务器)。
您可以设置容忍级别,这是应用程序对可疑操作的响应方式。
示例:如果您怀疑有人试图停止您的服务或操作/删除注册表,您可以警告或终止许可证或任何您想要执行的反措施。
免责声明:其中有些可能是侵入性的,这是你必须牺牲的代价
P.S.:
我相信有更多的方法来强化它,你有什么想法?
https://stackoverflow.com/questions/59933692
复制相似问题