170 похожих чатов

Кратко опишу проблему: Хочу к своему "самописному" менеджеру паролей добавить немного

безопасности. нужно чтобы пароли отображался в UI в нормальном текстовом виде, и потому подход с использованием SecureString и специальных пассвордбоксов со звездочками вместо символов не подходят в том виде в котором оно описано в интернетах, потому сейчас все в простом текстовом виде работает. с шифрованием и хранением данным на диске сложностей нет, а вот в оперативной памяти остаются следы, которые меня немного раздражают потому как память может в неочищенном виде попасть наружу. как сделать правильное "забеление" памяти в шарпе? вот самое "разумное" что приходит в голову - это при закрытии программы, закрыть все окна, и сгенерировать значительное количество случайных данных, чтобы перезаписать выделенную память процесса, потому как CLR вроде бы не должен возвращать винде освобожденную память сразу. само собой гарантировать результат такое не может, но кажется должно работать. (дампы памяти я не проверял, при таком подходе). если кто-то знает хорошее решение, то подскажите. лично мне кажется контроль памяти надо как-то через WIN API делать и контролировать всю выделенную и освобожденную память процесса.


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

5 ответов

9 просмотров

А это, можно ещё рендерить в вектор или в текстуру шрифт. Чтобы даже когда программа запущена и показывает пароль из оперативки нельзя было бы просто считать текстовый пароль

Эм. А вы проверяли, что она может попасть в неочищенном виде наружу? В современных ОС так это не работает, насколько мне известно. То есть если даже откусить себе памяти mallocом, то далеко не рандомные значения будут, а одно и тоже значение размазанное на весь выделенный участок.

Алексей- Автор вопроса
Anton 『被遗忘的社会』
Эм. А вы проверяли, что она может попасть в неочищ...

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

Алексей
я хз как проверить на практике такое. конечно я в ...

Короче вообще можешь тупо unsafe методов получить доступ к памяти, где хранится твоя строка и забить её нулями

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта