隐藏纯文本文件(python tkinter)

2024-06-09 22:05:25 发布

您现在位置:Python中文网/ 问答频道 /正文

形势

一旦应用程序启动,我就解密所有存储的数据(使用ARC4加密)并将其存储在一个文件中。现在应用程序全屏运行,但是如果用户最小化这个窗口并查看他的文件管理器(nemo、explorer等),那么他/她将看到一个纯文本文件。这将导致所有的数据被泄露,显然我不希望这种情况发生。一旦应用程序关闭,我就用os.remove加密数据并删除明文文件,只存储加密的数据。我担心的是应用程序运行的时间。存储的数据是帐户信息(用户名、密码等)。你知道吗

问题

有没有办法隐藏这个纯文本文件,这样用户就无法在文件管理器中看到它,但我可以从程序中访问它?你知道吗

障碍:(

我不能改变整个程序的设计,因为我是在一个最后期限运行,这是一个大的应用程序,只会占用太多的时间。请帮我解决这个问题。你知道吗

规格

我正在Linux Mint机器上使用python2.7。你知道吗


Tags: 文件数据用户程序应用程序管理器os时间
3条回答

更安全的方法是使用内存映射文件而不是磁盘文件。如果加密数据的大小不是数百兆字节,那么您可以在内存中创建文件,而不必接触磁盘。看看StringIO模块。当然,这并不是100%安全的,因为有一些方法可以查看RAM中存储的内容,并且操作系统可以将数据分页到基于HDD的分页文件中,但它仍然比磁盘上的纯文本物理文件“受保护”好几个数量级。你知道吗

理想情况下,您可以根据需要解密数据,使用它,然后在不再需要时从内存中清除数据,而不必将其写入磁盘。如果设计上的改变太多了,你可以让一个非技术用户更难访问你所有的敏感信息,把它存储在内存中,接受任何关心它的人都可以访问它。你知道吗

如果做不到这一点,其他一些选项会从更容易访问到更难访问数据:

  • 可以隐藏文件,但如果用户启用“显示隐藏文件”或 使用ls -l他们可以看到它。你知道吗
  • 您可以读取并保护该文件,但用户可以更改对该文件的权限 要读取它的文件。你知道吗
  • 您可以在使用文件后直接删除它,但是用户可以使用数据恢复工具来读取文件(或者在程序使用它时读取它)。你知道吗
  • 您可以将文件发送到远程服务器并从那里读取它 没有解密的数据接触到用户的驱动器,但是如果 他们使用数据包嗅探器来读取数据。你知道吗
  • 您可以将其单独保存在内存中,但如果操作系统将其分页或 用户检查你的程序内存,他们可以读取数据。你知道吗

将敏感数据存储在纯文本文件中是一个非常糟糕的主意。你真的应该只在你需要的时候解密数据,并在程序中立即使用它,而不必把它写到文件中。你知道吗

但是,假设您已经知道这一点,并且只希望快速修复隐藏文件,那么您可以:

  • 使文件名以.开头-例如.data。这将使文件在基于unix的系统上隐藏。你知道吗
  • 将文件放在用户不太可能搜索的模糊位置,例如/tmp
  • 不要给文件一个明显的名称,比如passwords.txt,而是使用从哈希函数或时间戳生成的名称,比如time.time()。这将有一个额外的好处,使您的文件名不同,每次程序运行。你知道吗
  • 您可以使用os.chmod(file, '022')从文件中删除读取权限
  • 当程序关闭时,用os.remove(file)删除文件

有一些方法可以绕过所有这些防御措施(甚至删除文件),它们只会让用户读取数据的任务变得更加困难。这根本不是真正的保护,依靠这样的技术来保护真实数据绝对不是一个好主意。你知道吗

相关问题 更多 >