Как я могу повысить безопасность памяти в Delphi? - PullRequest
3 голосов
/ 11 февраля 2009

Возможно ли "стереть" строки в Delphi? Позвольте мне объяснить:

Я пишу приложение, которое будет включать DLL для авторизации пользователей. Он будет читать зашифрованный файл в XML DOM, использовать информацию там, а затем освободить DOM.

Очевидно, что незашифрованный XML все еще находится в памяти DLL и поэтому уязвим для проверки. Теперь я не собираюсь зацикливаться на защите этого - пользователь может создать еще одну DLL - но я бы хотел сделать основной шаг, чтобы имена пользователей не оставались в памяти целую вечность. Тем не менее, я не думаю, что смогу легко стереть память из-за ссылок. Если я пройду через мой DOM (который является классом TNativeXML) и найду каждый экземпляр строки, а затем превращу его во что-то вроде «aaaaa», то он фактически не назначит новый указатель строки на ссылку DOM, а затем оставит старую строку сидя там в памяти в ожидании перераспределения? Можно ли быть уверенным, что я убиваю единственную и оригинальную копию?

Или есть в D2007 средство, чтобы сказать ему, чтобы стереть всю неиспользуемую память из кучи? Так что я мог бы освободить DOM, а затем сказать, чтобы стереть.

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

Ответы [ 11 ]

0 голосов
/ 11 февраля 2009

Грязно, но вы могли бы отметить размер кучи, который вы использовали, когда у вас есть куча, заполненная конфиденциальными данными, затем, когда она будет освобождена, сделайте GetMem, чтобы выделить большой промежуток (скажем) 200% того, что. Заполните этот блок и сделайте предположение, что любая фрагментация не очень полезна для экзаменатора. Bri

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...