【问题标题】:Save data in C++ to a file which can't be accessed by the user?将 C++ 中的数据保存到用户无法访问的文件中?
【发布时间】:2012-01-05 16:46:45
【问题描述】:

我正在尝试创建一个基本的登录,在 C++ 中创建帐户系统,其中基本上提示用户输入用户名和密码或创建一个新帐户。在创建新帐户的选项中,用户输入了一些保存在文件中的详细信息,但是我不希望这些数据是可编辑的。有什么方法可以使这些数据无法访问?我的操作系统是 Windows。

【问题讨论】:

  • 这在很大程度上取决于您的操作系统。
  • 太模糊了。高度特定于应用程序和平台。而且可能是傻瓜的差事。
  • 你必须详细说明;显然,它必须可供某人访问,即使创建帐户的用户无法访问它。
  • 添加“我的操作系统是 Windows”是不够的。您需要一组功能和操作要求。需要一些分析思维
  • 一般来说,如果您的应用程序可以在某处编写,用户就有可能这样做(当然需要付出不同的努力)。我认为最简单、相当安全的方法是以加密形式存储数据(当然,如果您的应用程序需要访问它,它需要包含密码,因此用户可以对其进行逆向工程,但再一次没有绝对的安全(只要看看那里所有破解的应用程序/游戏)

标签: c++ file fstream


【解决方案1】:

如果用户真的想要访问该文件,你无法阻止他们。 在大多数情况下,一个简单的答案是隐藏文件,方法是更改​​其属性(在 Windows 上)或在名称前加上一个点(在 Unix 上)。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365535(v=vs.85).aspx 用于设置隐藏属性。

【讨论】:

  • 好吧,如果登录系统以不同的用户身份运行,则很有可能使文件完全无法访问。
【解决方案2】:

最简单但不太安全的方法是写入二进制文件。

“正确”的做法可能是对数据进行哈希处理,然后写入二进制文件。

【讨论】:

    【解决方案3】:

    使用 2 路加密算法,例如 AES。然后,正如@Casey 所说,将其写入二进制文件。

    您还需要一个密钥来加密/解密数据,这意味着您的应用程序需要将密钥存储在您随应用程序提供的.exe.dll 中。这样做的缺点是,理论上,真正的技术用户可以使用二进制编辑器搜索 .exe 或 .dll 并可能只找到密钥,但我猜测数量或此类用户会非常少。

    否则,您可以拥有一个云密钥库并从那里检索数据。

    您应该从互联网上获得不少用 C 编写的 AES 库(它们通常只有 1 个文件长),因此您应该使用它们而不是自己实现。

    编辑:重新阅读帖子时,如果您的秘密数据需要进行身份验证,那么您真正需要的是影子文件。 Unix 系统维护一个/etc/shadow,其中包含密码的MD5 散列(1 路散列)。因此,当用户下次输入密码时,您只需验证新密码的哈希是否与存储的哈希匹配。这种方法的优点是没有人可以读取实际密码。

    【讨论】:

      【解决方案4】:

      您可以混淆编写二进制文件的方式,为其创建校验和,将校验和附加到开头、中间或结尾,对其进行加密,并在加密后再次创建和附加另一个校验和。如果所有校验和都不匹配,则显然文件已被泄露。

      虽然所有这些都不会阻止用户实际编辑文件,但除了最坚定的用户之外,所有这些用户都无法以任何有意义的方式编辑文件。

      当然,如果文件被编辑,它就无法使用,但您甚至可以通过创建和存储恢复信息(例如奇偶校验文件)来解决这个问题。

      【讨论】:

        【解决方案5】:

        您看过备用数据流吗?基本上,大多数流行文件系统上的文件可以是二维的。通常用户只使用零数据流,但文件系统可以支持并行数据流,但大多数人不知道这些存在,所以他们从来没有被关注过。事实上,大多数工具会忽略除了流零之外的任何内容,因此它们甚至可能无法复制这些文件!

        Alternate Data Streams

        您可以将它与其他任何建议一起使用。

        【讨论】:

          猜你喜欢
          • 2019-11-08
          • 2019-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多