Оригинальный вопрос
Итак, проект, над которым я работаю, смертельно параноик о загрузке файлов.
В рамках этого вопроса я не использую этот термин в отношении полезных нагрузок; Я говорю о конфиденциальности.
Программы всегда могут выходить из строя и оставлять временные файлы в файловой системе. Это нормально. Немного конфиденциальность-параноид может написать cronjob, который каждые несколько минут врезается в временную папку с файлом, и удаляет что-либо более чем за несколько секунд до вызова cronjob (не все, просто потому, что в противном случае он мог бы поймать файл при загрузке).
... К сожалению, мы делаем этот параноик еще одним шагом:
В идеале нам бы хотелось никогда не видеть временные файлы из загрузки файлов в любом месте, кроме связанного с процессом ОЗУ.
Есть ли способ научить PHP искать временный файл как капли в памяти, а не в файловой системе? Мы используем PHP-FPM как обработчик CGI и Apache в качестве нашего веб-сервера, в случае, если делает это легче. (Примечание: "Файловая система" - это ключевое слово здесь, а не "диск", поскольку, конечно, есть способы сопоставить файловую систему с ОЗУ, но это не устраняет проблему доступности и автоматической очистки после сбоя. )
Альтернативно, есть ли способ, по которому эти временные файлы могут быть зашифрованы немедленно, когда они записываются на диск, чтобы они никогда не содержались в файловой системе без шифрования?
Обзор темы
Я, к сожалению, могу только принять один ответ - но для всех, кто это читает, вся нить чрезвычайно ценна и содержит коллективные идеи многих людей. В зависимости от того, чего вы надеетесь достичь, принятый ответ вам может быть неинтересным. Если вы пришли сюда через поисковую систему, , пожалуйста, найдите минутку, чтобы прочитать весь поток.
Вот компиляция usecases, как я их вижу для быстрой справки:
Re: Временные файлы PHP
-
ОЗУ вместо диска (например, из-за проблем с вводом/выводом) → RAMdisk/сопоставимый (plasmid87, Joe Hopfgartner)
-
Немедленное шифрование (per-filesystem-user) и rarr; encFS (ADW) (+ заглавие в соответствии с Sander Marechal)
-
Защитить права доступа к файлам и rarr; ограничивающие собственные разрешения для Linux (необязательно для vhost) (Gilles) или SELinux (см. различные комментарии)
-
Память, привязанная к процессу, вместо файловой системы (поэтому сбой процесса удаляет файлы) (первоначально заданный вопросом)
-
не позволяют файловым данным напрямую обращаться к PHP и rarr; обратный прокси (Cal)
-
отключить запись PHP в файловую систему → см. ссылку на PHP в этом ответе (Stephan B) или запустить PHP в режиме CGI (Phil Lello)
-
файлы только для записи →
/dev/null
файловая система (Phil Lello) (это полезно, если у вас есть доступ к данным как поток дополнительно, но не может отключить функцию записи файлов, которая работает параллельно, разрешает ли PHP это неясно)
-
Re: ваши файлы, post-upload
- сохранение в базе данных вместо диска → шифрование файлов в базе данных HowTo (Rook)