У меня PHP работает как модуль под Apache2 на Debian.
Когда к Apache приходит запрос, я выполняю некоторые действия с конфиденциальными данными, которые уже находятся в памяти сервера. Такие данные уже перезаписываются и стираются автоматически.
С другой стороны, и в этом суть, поскольку такими конфиденциальными данными манипулируют под сценарием PHP и, безусловно, копируют в соответствующее пространство памяти, моя проблема состоит в том, чтобы быть уверенным, что после завершения ответа HTTP (и связанного PHP / Процесс Apache2 завершается?), Нет абсолютно никаких ссылок и значений на конфиденциальные данные, которые сохраняются в памяти.
Возможно, эффективным способом является частая очистка / переопределение (например, cronjob или после завершения скрипта PHP) всего неактивного пространства памяти. Вопросы:
1) Есть ли команда unix или низкоуровневая библиотека для очистки / переопределения всего неактивного пространства памяти?
2) Если нет процесса PHP, а вызывается только процесс Apache2, и, поскольку процессы Apache2 не обязательно завершаются, существует ли какая-либо команда или библиотека для очистки «неактивной памяти» активного процесса?
3) Существуют ли эффективные решения в PHP для очистки / переопределения памяти, используемой перед выключением скрипта?
Спасибо
Я думаю, что этот ответ на сайте безопасности имеет отношение к памяти: https://security.stackexchange.com/questions/29019/are-passwords-stored-in-memory-safe
На мой взгляд, не стоит прилагать усилий. Если у пользователя есть доступ к памяти, которую использовал сценарий, то он, вероятно, имеет доступ к самому сценарию и поэтому может вставить любой код, который он хочет, чтобы обойти любые ваши меры. Это также было бы намного проще, чем очистка памяти для данных. Заблокируйте операционную систему наилучшим образом, если вы управляете ОС.
Других решений пока нет …