将PHP(/ PHP-FPM/Apache)的临时上载文件存储在RAM而不是文件系统中(或仅加密)?

pin*_*hic 38 php apache security file-upload temporary-files

原始问题

所以我正在研究的项目是关于文件上传的死亡偏执.
在这个问题的范围内,我没有在有效载荷方面使用该术语; 我说的是保密.

程序总是会崩溃,并使临时文件在文件系统中闲逛.这很正常.在保密偏执可以写命中临时文件夹每隔几分钟,并删除任何东西比之前的cronjob呼叫(而不是几秒钟旧的一个cronjob 一切,仅仅是因为否则可能赶上一个文件被上传过程).

......不幸的是,我们让这个偏执狂更进了一步:

理想情况下,我们希望永远不会在文件上传中看到临时文件,而是在与进程相关的RAM中.

有没有办法教PHP在内存中而不是在文件系统中查找临时文件作为blob?我们使用PHP-FPM作为CGI处理程序,使用Apache作为我们的Web服务器,以防万一.(另请注意:'Filesystem'是这里的关键字,而不是'disc',因为当然有方法将文件系统映射到RAM,但这并不能解决可访问性和自动崩溃后清理问题. )

或者,这些临时文件是否可以在写入光盘时立即加密,以便它们在没有加密的情况下永远不会保存在文件系统中?


线程概述

遗憾的是,我只能接受一个答案 - 但是对于读这篇文章的人来说,整个帖子非常有价值,并且包含了许多人的集体见解.根据希望实现的目标,接受的答案可能对您不感兴趣.如果您通过搜索引擎来到这里,请花点时间阅读整个帖子.

以下是我看到的用例的汇编,以供快速参考:

Re:PHP的临时文件

Re:你的文件,上传后

Cal*_*Cal 5

您是否考虑在用户和Web服务器之间添加一个层?在Web服务器前使用perlbal和一些自定义代码之类的东西可以让你在上传的文件被写入任何地方之前拦截它们,加密它们,将它们写入本地ramdisk,然后在Web服务器上代理请求(使用文件名和解密密钥).

如果PHP进程崩溃,加密文件将被保留,但无法解密.没有未加密的数据写入(ram)磁盘.