Shu*_*ain 7 python encryption mmap data-protection in-memory
python中有没有办法获取内存文件的路径,因此对于需要文件路径的方法,它会像普通文件一样运行?
我的目标是保护文件,从而避免转储到 /tmp。
尝试读取加密文件 -> 将文件解密到内存中 -> 将其路径用于其他接口。
mmap不提供路径或文件名。
或者这个问题的任何替代解决方案?
你的标签没有提到操作系统,但我假设你运行Linux,因为你提到了/tmp。在这种情况下,您可以使用/dev/shm. 它是用于POSIX 共享内存的目录,通常是文件系统的挂载点tmpfs。因此,除非系统必须交换,否则它会保留在内存中,但这与常规进程内存没有什么不同。
这意味着这应该适合您:
with tempfile.NamedTemporaryFile(dir='/dev/shm') as memfile:
size = 1024
memfile.file.truncate(size)
mapped = mmap.mmap(memfile.file.fileno(), size)
Run Code Online (Sandbox Code Playgroud)
我应该提到的是,这显然是不可移植的,即使对于其他 Unix 系统也是如此。
就整个努力而言:人们可能会质疑它的意义。您要防范什么情况?命名临时文件已创建,且读取权限设置为仅限用户,因此只有三种方法可以读取它:
当然,在深处进行一些防守并没有什么问题。
这是另一个有趣的小技巧:使用/proc/<pid>/fd
with tempfile.TemporaryFile() as outfile:
outfile.write(b"Username, Password")
outfile.flush()
filepath = f"/proc/{os.getpid()}/fd/{outfile.fileno()}"
content = open(filepath).read()
Run Code Online (Sandbox Code Playgroud)
根据我的说法,它并没有更安全(如上所述)或更便携,但可能更混乱一些。另外,由于未命名文件由文件系统支持/tmp,因此它可能比共享内存大得多/dev/shm
| 归档时间: |
|
| 查看次数: |
2424 次 |
| 最近记录: |