在一个应用程序中,我有一个网络服务器和客户端。握手后,假设客户端发送"userId sessionId SOME_COMMAND param param param"
.
我已经确定了客户端,并且相应地在服务器上检查了 sessionId,因此身份不再是问题。
但我想防止黑客修改消息或创建虚假消息,例如发送"userId sessionId SOME_COMMAND paramModified paramModified paramModified"
.
我考虑过使用一对私有/公共加密密钥,并在消息本身中发送消息的哈希值。但由于它在客户端程序中是自动化的,我可能必须在握手期间发送公钥。所以黑客可以简单地检索它并生成正确的哈希值。
我也可以使用复杂的加密种子或算法,但我与黑客打交道的经验告诉我,他们会反编译任何东西。
所以底线是:我可以隐藏服务器上运行的所有内容,但我无法隐藏客户端程序上的任何内容。而且我想禁止修改客户端程序应该发送的消息。
我什至不知道这是否可能。我愿意接受任何建议。顺便说一句,我正在使用 Java,尽管它应该不是很相关。谢谢。