Как перезаписать память PHP для причины безопасности?

Я на самом деле работаю над скриптом безопасности, и кажется, что я встречу с проблемой PHP, и способ использовать память PHP.

My.php:

<?php
// Display current PID
echo 'pid= ', posix_getpid(), PHP_EOL;

// The user type a very secret key
echo 'Fill secret: ';
$my_secret_key = trim(fgets(STDIN));

// 'Destroty' the secret key
unset($my_secret_key);

// Wait for something
echo 'waiting...';
sleep(60);

И теперь я запускаю скрипт:

php my.php
pid= 1402
Fill secret: AZERTY             <= User input
waiting...

до конца скрипта (во время сна) я генерирую основной файл, отправляющий сигнал SIGSEV в скрипт

kill -11 1402

Я проверяю CoreFile:

 strings core | less

Вот выдержка результата:

...
fjssdd
sleep    
STDIN
AZERTY            <==== this is the secret key
zergdf
...

Я понимаю, что память только что выпускается с unset и не «уничтожена». Данные на самом деле не удаляются (вызов на бесплатную () функцию)

, поэтому, если кто-то сбрасывает память о процессе, даже после выполнения сценария, он мог прочитать $ my_secret_key (пока пространство памяти не будет перезаписано другим Процесс)

Есть ли способ перезаписать этот сегмент памяти полного пространства памяти после выполнения Script PHP?


Спасибо всем для ваших комментариев.

Я уже сейчас, как память управляется системой.

Даже если PHP не использует malloc и бесплатные (но некоторые отредактированные версии, такие как emalloc или efree), похоже (и я понимаю, почему) просто невозможно для PHP «мусор» после освобождения памяти.

Вопрос был больше любопытством, и каждый комментариев, по-видимому, подтверждает то, что я ранее намеревался сделать: напишите небольшой кусок кода в языке в памяти (C?) Для обработки этой особой части, выделяя простую строку с помощью malloc , перезаписи с XXXXXX после использования, освобождая.

Спасибо всем

J

9
задан Bill the Lizard 31 August 2011 в 08:33
поделиться