所以我正在创建一个JApplet游戏,我将用户信息保存到APPDATA中的.txt文件中。有没有更安全的方法来保存他们的信息,这将不允许他们编辑它来作弊?
答案 0 :(得分:2)
基本上,防止作弊的唯一方法是让您控制的服务器计算得分并以其他方式强制执行游戏规则。如果您正在编写点对点游戏,可能会有一些协议允许用户在不涉及您的情况下确定其他玩家是否在作弊。 ACM sigecom定期发布有关此类协议的研究。但是,由于applet安全模型的限制,用户需要授予applet特殊权限才能直接与其他用户交谈。
说到这一点,我建议不要“将用户的信息保存到.txt文件”。 %APPDATA%
仅限Windows,因此打破了“一次写入运行”;并且默认的小程序沙箱不允许读取或写入本地文件,因此您必须对小程序进行签名并说服您的用户说它特别适合这种提升的权限。
但是,您确实有一些小程序/服务器通信选项:
java.net.URL
Applet不能直接读写cookie,但JavaScript可以,JavaScript可以在applet上调用方法。将信息从服务器传递到applet(但不是退出)的最后一种方法是通过PARAM标记。您甚至可以传递由服务器私钥签名的初始游戏状态数据和PARAM标记中编码的base64;这会阻止任何人“编辑”它,虽然我想不出任何方法可以完全防止作弊,如果游戏状态的某些东西应该从玩家隐藏但在applet代码中已知。