【发布时间】:2020-01-05 05:02:26
【问题描述】:
我正在为没有任何控制和互联网连接的机器上的客户端开发本地解决方案。
解决方案是根据购买的许可证允许的请求(REST API 调用)数量来获利。因此,目前我们将请求计数存储在文件系统本身的加密文件中。但是这个解决方案并不完美,因为文件可以复制到某个地方,然后在请求配额结束时替换。此外,如果文件被删除,则需要支持人员进行手动干预。
我正在寻找一种以二进制形式存储状态/数据并在运行时更新它的解决方案(考虑以二进制本身更新的使用计数)
寻找更好的方法。
二进制也应该从之前存储的状态开始
有办法吗?
附:我知道写入二进制文件不会解决问题,但我认为它会通过增加可以存储状态的位置的排列和组合的数量来增加难度,并且因为您可以更改可执行文件这不是常识如果有人试图弄乱系统,请成为最后一个寻找状态的地方(通过默默无闻来保证安全)
【问题讨论】:
-
我不确定您在这种情况下的请求是什么意思,您是指对服务器的物理请求,因为那将是持有此许可证的更好地方。你能更好地定义请求的概念是什么意思吗?
-
这是一个有趣的问题。 (我认为它被否决了,因为不太清楚你在问什么,因为你所说的“二进制”是什么意思不清楚,还因为如果你的加密文件可以保存和恢复,那么你的二进制文件或任何文件也可以那件事。)如果您有兴趣,我有一些想法,但正如沃尔克暗示的那样,没有万无一失的解决方案。
-
@ajr 就像问题说的那样,我实际上正在寻找更好的方法。很想听听你的想法。我同意没有万无一失的解决方案。这里的二进制是 Golang 可执行文件
-
Volker 的答案是正确的(您不能仅在软件中做到这一点)。另一方面,您可以使用良好的 ol 软件保护加密狗,它是硬件(仍然不是 100% 安全,但比软件好得多,如果您的商业模式允许在产品中放置加密狗)。现在有 USB 加密狗。作为起点,请参阅en.wikipedia.org/wiki/Software_protection_dongle
标签: go binaryfiles binarywriter