我正在创建一个与服务器(我编程)对话的客户端程序。我为自己做了一个小游戏,我掷骰子,服务器也做。获得更高数字的人获胜。但是在我的代码中,我在用户按下按钮时发送服务器命令,然后服务器通过发送回滚动的内容来响应,因此可以在GUI窗口中显示。但是,我发现这是一种非常不安全的方法。例如,一个人可以简单地反编译jar文件,并使它们总是滚动12.因为两个滚动在一起的唯一地方(用户和服务器)是用户屏幕,我必须评估游戏来自客户,显然不是很安全。我试图让我的游戏更安全,并找到了2个选项。
混淆器
绑定到.exe
顺便说一句,另一个安全问题是它从我的ip地址连接到服务器(我不希望客户端用户知道)
答案 0 :(得分:6)
永远不要相信客户输入。
唯一真正“安全”的方法是让服务器为客户端生成自己的roll和roll。
当然,如果滚动比较的结果没有超出用户看到的影响(换句话说,客户没有报告谁赢了),那么真的,谁在乎呢?我可以修补Solitaire让我一直赢,但那没什么好玩的。
答案 1 :(得分:2)
如果代码在某人的计算机上,您应该认为它已被泄露并已被利用。在破解者和开发者之间的竞争中,破解者总是赢,因为破解者拥有他们需要的一切。罐子可以(容易地)反编译和反混淆,.exes可以被分开,并且在极端的水平上,操作系统可以被修改为落后于你的背后 - 字面意思。
相反,您应该重新考虑您的架构:您真的需要客户端掷骰子吗?服务器可以同时滚动吗?
答案 2 :(得分:1)
混淆和编译成“.exe”都可以相对容易地被击败。黑客/破解者和反病毒安全专家每天都会这样做。
基本上,您不能相信任何可以由您不信任的人控制的计算机上运行的任何应用程序。实际上,这意味着任何不在您(锁定和防火墙)的服务器机房中的任何东西。
(除此之外:即使基于TPM的系统也可能容易受到攻击,因为TPM芯片已成功受到攻击。但这无论如何都不实用,因为TPM无法保护应用级代码。 AFAIK,它甚至没有在操作系统级别使用......虽然我听说下一版本的Windows将要求TPM受阻的硬件。)