我正在用PHP编写web应用程序,它将(通过curl)与API (Java)进行通信,以达到许可的目的。网络应用程序将使用IonCube加密。当然,将使用HTTPS。
我担心有人会以某种方式重写curl函数,然后阻止与API的连接。出于这个原因,我想验证客户机(PHP应用程序)是否收到了来自真正API (Java)的响应。
我的想法是: API将每天生成唯一的令牌,这将由客户端在连接期间进行验证。丢失或不正确的令牌将阻止web应用程序。除了我,没有人知道令牌是如何产生的。
你觉得我的主意怎么样?也许我该用不同的方式来做这件事?
发布于 2020-11-05 15:36:40
一般来说,DRM是困难的,像非常困难的,像不可能的,每个游戏在某个时候都会被破解,DRM的保护会被移除。例如,如果有人可以“覆盖curl函数”,他肯定可以更改一个php文件,根本不调用API,并删除任何依赖于调用API的进一步检查。
删除java和php术语,只使用" client“和"server",您希望确保客户端拥有完全操作的有效许可证。你可以通过调用服务器来做到这一点。金科玉律之一是:永远不要信任客户。因为客户总是会被篡改。
现在,您可以考虑两种应用程序:在线应用程序和脱机应用程序。在线应用程序需要服务器通信才能工作,例如在多人游戏中。
脱机应用程序不需要服务器通信才能工作,而只需要进行身份验证。在离线应用程序环境中,您通常运气不好,因为客户端可以更改为不调用,而不关心许可检查。是的,您可以添加一些工具来混淆代码,或者使用它做一些奇妙的事情,但是到了最后,它仍然是代码,其中一些步骤将是可逆的,结果将是可变的。看见。例如ioncube decryption in seconds :D
在在线应用程序环境中,您可以依赖完全正常的登录过程:在最基本的意义上,客户端想要与服务器进行的每一次常规交互都必须发送许可证令牌。如果令牌无效,服务器将使用错误代码进行响应。
https://stackoverflow.com/questions/64700233
复制相似问题