Доступ к внутреннему списку строк clr - PullRequest
5 голосов
/ 23 декабря 2008

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

И хотя я совершенно уверен, что это правда :-) Я не уверен, насколько это легко на самом деле. Я попытался погуглить тему, но я не получил соответствующих результатов (Google-фу слаб в этом), поэтому я попробую вас на SO.

Вам известен какой-либо "простой" способ доступа к списку целочисленных строк в приложении "Доминиканец"? Должен ли я использовать дампы памяти и тому подобное, или есть метод, такой как AppDomain.GetInteredStringsList ()?

И в связи с этим: как легко получить полезные данные из целочисленных строк? Действительно ли это дыра в безопасности для хранения конфиденциальных данных в строках?

Ответы [ 4 ]

6 голосов
/ 23 декабря 2008

Это не особенно просто - но это выполнимо.

По сути, если у вас есть что-то, что может занять дамп памяти, вы можете найти биты памяти, которые выглядят как строковые объекты. (В частности, у них у всех будет один и тот же «указатель на информацию о типе» в начале, поэтому, если у вас есть образец строки, вас не будет.)

Кстати, это не имеет ничего общего с интернированными строками. Это не так, как все строки интернированы - только строковые константы и строки, которые пользователь явно интернирует.

3 голосов
/ 23 декабря 2008

Это действительно дыра в безопасности для хранения конфиденциальные данные в строках?

Да, безусловно, да!

конфиденциальные данные безопасности должны храниться с использованием класса SecureString .

Edit:

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

1 голос
/ 23 декабря 2008

Не невозможно сделать ... хотя не обязательно через управляемый код. Все, у кого есть доступ к дампу процесса (windb / sos / etc), не будет иметь проблем с поиском строк.

1 голос
/ 23 декабря 2008

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

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