отслеживание конфиденциальных данных в памяти из моего приложения WPF и библиотек C # - PullRequest
3 голосов
/ 05 января 2011

Я пытался просмотреть пару моих библиотек C # и приложение WPF, которое их использует, и заменить обычные текстовые строковые пароли на SecureString. Мне нужно преобразовать SecureString обратно в обычную строку в некоторых местах, чтобы взаимодействовать с другими библиотеками / веб-службами, которые я не контролирую, но я хочу минимизировать количество, которое я делаю. Я также пытаюсь следовать этой статье о том, как сделать это правильно. Есть ли простой способ отслеживать, какие строки в моем коде всплывают в памяти? Я хотел бы знать, сколько, так сказать, слабых мест в моем коде относительно чувствительных данных, находящихся в открытом виде в памяти.

1 Ответ

2 голосов
/ 05 января 2011

Одна вещь, которую вы можете проверить, это то, что ваш открытый текст хранится в библиотеке, добавив слабую ссылку на него, и посмотрите, сколько времени уйдет.Вы можете проверить, помогает ли это время от времени выполнять принудительный сбор мусора.Но избегайте принудительного GC в производственном коде, особенно на серверах.

Но это только половина проблемы: в основном это зависит от того, что другие библиотеки делают с вашей строкой.Если они встраивают пароль в какую-то другую строку и сохраняют в нем ссылку, он будет незащищенным в памяти, если вы не сможете его контролировать.

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