Как конвертировать String
в SecureString
?
c#
.net
security
securestring
Developer404
источник
источник
12345
... такие вещи у идиота в багаже!»*****
AppendChar
не выполняется до времени выполнения, поэтому эти символы все еще можно прочитать из IL, верно? Может быть, некоторая обфускация во время компиляции тоже поможет ... то есть, если вы жестко кодируете пароли.Существует также другой способ преобразования между
SecureString
иString
.1. Строка в SecureString
2. SecureString в строку
Вот ссылка
источник
SecureString
если ваш код создаетstring
объект со значением, которое вы хотите защитить. ЦельSecureString
состоит в том, чтобы избежать попадания строки в управляемую память, чтобы злоумышленник, исследующий эту память, мог обнаружить значение, которое вы хотите скрыть. ПосколькуNetworkCredential
вызываемый вами конструктор требует строки, это не выход ... Конечно, ваш код - это простой способ преобразования в SecureString и обратно, но его использование делает ваш код таким же безопасным, как использование простогоstring
SecureString
при работе с некоторыми библиотеками. И давайте будем честными: если кто-то активно сканирует память вашего приложения, значит, вы уже проиграли. Даже если вы правильно использовали SecureString, чего я никогда не видел, вам придется извлечь другие ценные данные.метод ниже помогает преобразовать строку в безопасную строку
источник
Вы можете следить за этим:
источник
Вот дешевый трюк с linq.
источник
Я выкину это там. Зачем?
Вы не можете просто изменить все свои строки на защищенные, и вдруг ваше приложение станет «безопасным». Защищенная строка предназначена для хранения строки в зашифрованном виде как можно дольше и дешифрования только в течение очень короткого периода времени, стирая память после выполнения операции с ней.
Я бы рискнул сказать, что у вас могут возникнуть проблемы на уровне дизайна, прежде чем беспокоиться о защите строк приложения. Сообщите нам больше информации о том, что вы пытаетесь сделать, и мы сможем помочь лучше.
источник
источник
нет причудливого linq, не добавляя все символы вручную, просто и просто:
источник
var sc = new SecureString(); foreach(char c in "foo") sc.appendChar(c);
Я согласен со Спенсом (+1), но если вы делаете это для изучения или тестирования заливок, вы можете использовать foreach в строке, добавляя каждый символ в защищенную строку с помощью метода AppendChar.
источник
Я просто хочу указать всем, кто говорит: «Дело не в этом
SecureString
», что многие из людей, задающих этот вопрос, могут быть в приложении, где по какой-либо причине, оправданной или нет, они не особенно обеспокоены тем, что временная копия пароля находится в куче как строка с поддержкой GC, но они должны использовать API, который принимает толькоSecureString
объекты. Итак, у вас есть приложение, в котором вам все равнонаходится ли пароль в куче, возможно, он предназначен только для внутреннего использования, а пароль существует только потому, что он требуется базовыми сетевыми протоколами, и вы обнаружите, что эта строка, в которой хранится пароль, не может использоваться, например, для настройки удаленной оболочки PowerShell Пространство выполнения - но нет простого и понятного однострочника для создания того,SecureString
что вам нужно. Это небольшое неудобство - но , вероятно , стоит того , чтобы гарантировать , что приложения , которые действительно делают нужноSecureString
делать не искушать автор к использованиюSystem.String
илиSystem.Char[]
посредникам. :-)источник
Если вы хотите , чтобы сжать преобразование
string
кSecureString
вLINQ
заявлении можно выразить следующим образом :Однако имейте в виду, что использование
LINQ
не повышает безопасность этого решения. Он страдает тем же недостатком, что и любое преобразование изstring
вSecureString
. Пока оригиналstring
остается в памяти, данные уязвимы.При этом то, что может предложить приведенный выше оператор, заключается в том, чтобы объединить создание
SecureString
, его инициализацию данными и, наконец, блокировку его от модификации.источник
Следующие 2 расширения должны помочь:
Для
char
массиваИ для
string
Спасибо Джону Дэггу за
AppendChar
рекомендацию.источник
вы можете использовать этот простой скрипт
источник