Как связать параметр SecureString или char [] в .NET Core без использования строк - PullRequest
0 голосов
/ 11 июня 2018

При хранении секретной строки (например, пароля или ключа) плохой практикой является использование System.String, поскольку строки являются неизменяемыми, и вы не можете запланировать сборку мусора для удаления их из памяти.Microsoft рекомендует использовать SecureString, чтобы избежать этого, когда содержимое также шифруется в состоянии покоя.См. MSDN: System.Security.SecureString

. Я не вижу способа привязки параметра SecureString в .NET Core Controller, платформа выдает JsonSerializationException для параметра, когдавыполнение сопоставления модели с внутренним сообщением об исключении Could not cast or convert from System.String to System.Security.SecureString. Таким образом, анализатор JSON уже сделал из него string, и секрет остается незашифрованным в памяти.

Каркас не может связать даже char[], который является обычным решением для работы с секретными строками (хотя он и не зашифрован, char[] являются изменяемыми, поэтому могут быть перезаписаны для удаления их из памяти).Сбой с похожим исключением.

1 Ответ

0 голосов
/ 14 июня 2018

Я надеялся, что кто-то скажет: «Да, запросы анализируются в собственном коде, и вы можете избежать ввода значений в управляемую кучу с помощью ... {некоторого решения, возможно, включающего SecureString}".

Из комментариев кажется, что запросы обрабатываются в управляемом коде, поэтому можно утверждать, что нет смысла использовать SecureString или char[], поскольку значения уже находятся в куче.

стоит зашифровать значения в состоянии покоя, потому что сборка мусора в какой-то момент изгонит строки, но не детерминированным образом.

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