pin*_*hic 38 php apache security file-upload temporary-files
所以我正在研究的项目是关于文件上传的死亡偏执.
在这个问题的范围内,我没有在有效载荷方面使用该术语; 我说的是保密.
程序总是会崩溃,并使临时文件在文件系统中闲逛.这很正常.在稍保密偏执可以写命中临时文件夹每隔几分钟,并删除任何东西比之前的cronjob呼叫(而不是几秒钟旧的一个cronjob 一切,仅仅是因为否则可能赶上一个文件被上传过程).
......不幸的是,我们让这个偏执狂更进了一步:
理想情况下,我们希望永远不会在文件上传中看到临时文件,而是在与进程相关的RAM中.
有没有办法教PHP在内存中而不是在文件系统中查找临时文件作为blob?我们使用PHP-FPM作为CGI处理程序,使用Apache作为我们的Web服务器,以防万一.(另请注意:'Filesystem'是这里的关键字,而不是'disc',因为当然有方法将文件系统映射到RAM,但这并不能解决可访问性和自动崩溃后清理问题. )
或者,这些临时文件是否可以在写入光盘时立即加密,以便它们在没有加密的情况下永远不会保存在文件系统中?
遗憾的是,我只能接受一个答案 - 但是对于读这篇文章的人来说,整个帖子非常有价值,并且包含了许多人的集体见解.根据您希望实现的目标,接受的答案可能对您不感兴趣.如果您通过搜索引擎来到这里,请花点时间阅读整个帖子.
以下是我看到的用例的汇编,以供快速参考:
RAM而不是光盘(例如由于I/O问题)→ RAMdisk /可比较(质量87,Joe Hopfgartner)
安全文件权限→ 限制性本机Linux权限(可选择每个vhost)(Gilles)或SELinux(请参阅各种注释)
进程附加内存而不是文件系统(因此进程崩溃会删除文件)(最初由问题决定)
不要让文件数据直接到达PHP→ 反向代理(Cal)
禁用PHP写入文件系统→ 请参阅此答案中的PHP错误链接(Stephan B)或在CGI模式下运行PHP(Phil Lello)
文件→只写/dev/null文件系统(菲尔Lello)(如果你有机会到数据流,这是有用的附加,但不能关闭运行并行文件书写功能; PHP是否允许这种尚不清楚)