【问题标题】:Best way to prevent user from accesing data防止用户访问数据的最佳方法
【发布时间】:2023-03-30 04:48:01
【问题描述】:

所以,我一直在用 Java 练习游戏开发。现在我试图通过将数据放入文件来保存用户的进度。但是如果我把它放到一个文本文件中,显然它会很容易访问。存储/散列数据的最佳方式是什么,例如“当前级别、攻击力等”。

谢谢。

【问题讨论】:

标签: java storing-data


【解决方案1】:

这将是一个模糊的答案。

如果您只是不希望它是一个文本文件,您可以使用您正在使用的语言的二进制序列化来编写一个二进制文件。

作为第二步,您可以考虑加密您的文件。

但是,无论您做什么,或者您多么努力,只要所有数据都存储在客户端上,那么您的用户仍然可以更改它们。

如果您由于空间限制不想远程存储所有信息,您可以只远程存储文件哈希并验证它没有被篡改。

【讨论】:

  • 谢谢,如果我在 MD5 散列中使用随机散列 + 整数数据,比如密码存储,可以吗?
  • 是的,如果你真的想要,你可以添加盐,但我假设对于像你的整个保存文件这样复杂的东西存在非常有限的查找表 :)(换句话说,随机部分可能是不必要的)。请记住,加密意味着您必须将密钥存储在某个地方,可能在服务器端。
  • 不客气。但是,如果我可以主动提出建议,如果您开始玩游戏开发,请不要担心应用程序的安全性,而是要了解更多关于物理引擎、渲染等方面的知识。Triple A 标题搞砸了他们的每天都有反作弊软件,在这么早的阶段专注于那些是浪费你的精力:)
  • @VelisaPetricevic,如果答案让你满意,你能把它打勾吗?
【解决方案2】:

您可以加密日期并将其存储在文本文件中。加密将阻止用户对其进行修改。

【讨论】:

  • 但是你需要找到隐藏加密密钥的方法。
  • 是的,您可以将密码存储在代码中或使用代码中的某些逻辑来生成它..我知道它不安全,任何黑客都可以破解它..但我认为如果数据只是您可以存储的级别/分数...
【解决方案3】:

您可以使用sqlite,它是一个基于文件的数据库。支持encryption以及多种操作系统,安装使用方便!

阅读更多相关信息here

【讨论】:

    【解决方案4】:

    实现这一点的一个非常简单的方法是使用序列化。它允许您直接获取您的 java 对象并将其保存为当前状态。一个很好的教程是http://www.mkyong.com/java/how-to-write-an-object-to-file-in-java/

    轻松读取和更改此数据的唯一方法是访问创建它的 java 类。

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 2012-12-10
      • 2011-02-24
      • 1970-01-01
      • 2011-04-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多