形势
一旦应用程序启动,我就解密所有存储的数据(使用ARC4加密)并将其存储在一个文件中。现在应用程序全屏运行,但是如果用户最小化这个窗口并查看他的文件管理器(nemo、explorer等),那么他/她将看到一个纯文本文件。这将导致所有的数据被泄露,显然我不希望这种情况发生。一旦应用程序关闭,我就用os.remove
加密数据并删除明文文件,只存储加密的数据。我担心的是应用程序运行的时间。存储的数据是帐户信息(用户名、密码等)。你知道吗
问题
有没有办法隐藏这个纯文本文件,这样用户就无法在文件管理器中看到它,但我可以从程序中访问它?你知道吗
障碍:(
我不能改变整个程序的设计,因为我是在一个最后期限运行,这是一个大的应用程序,只会占用太多的时间。请帮我解决这个问题。你知道吗
规格
我正在Linux Mint机器上使用python2.7。你知道吗
更安全的方法是使用内存映射文件而不是磁盘文件。如果加密数据的大小不是数百兆字节,那么您可以在内存中创建文件,而不必接触磁盘。看看StringIO模块。当然,这并不是100%安全的,因为有一些方法可以查看RAM中存储的内容,并且操作系统可以将数据分页到基于HDD的分页文件中,但它仍然比磁盘上的纯文本物理文件“受保护”好几个数量级。你知道吗
理想情况下,您可以根据需要解密数据,使用它,然后在不再需要时从内存中清除数据,而不必将其写入磁盘。如果设计上的改变太多了,你可以让一个非技术用户更难访问你所有的敏感信息,把它存储在内存中,接受任何关心它的人都可以访问它。你知道吗
如果做不到这一点,其他一些选项会从更容易访问到更难访问数据:
ls -l
他们可以看到它。你知道吗将敏感数据存储在纯文本文件中是一个非常糟糕的主意。你真的应该只在你需要的时候解密数据,并在程序中立即使用它,而不必把它写到文件中。你知道吗
但是,假设您已经知道这一点,并且只希望快速修复隐藏文件,那么您可以:
.
开头-例如.data
。这将使文件在基于unix的系统上隐藏。你知道吗/tmp
passwords.txt
,而是使用从哈希函数或时间戳生成的名称,比如time.time()
。这将有一个额外的好处,使您的文件名不同,每次程序运行。你知道吗os.chmod(file, '022')
从文件中删除读取权限os.remove(file)
删除文件有一些方法可以绕过所有这些防御措施(甚至删除文件),它们只会让用户读取数据的任务变得更加困难。这根本不是真正的保护,依靠这样的技术来保护真实数据绝对不是一个好主意。你知道吗
相关问题 更多 >
编程相关推荐