2017-02-17 7 views
-2

является- объект System.Security.SecureString, неизменяемый или изменяемый?

System.Security.SecureString

объекта неизменен или изменяемым в рамках .NET?

+0

Это целая точка класса, это решает проблему неизменность класса String. его метод AppendChar() является наиболее очевидным. Подумайте, что вы, вероятно, неправильно используете его, осталось немного внутреннего кода, который вы бы перекликались с тем, что могло бы выиграть от него. –

ответ

0

Согласно документации, похоже, что он изменен.

Строка против SecureString

Экземпляр класса System.String является как неизменное и, когда они больше не нужны, не может быть программно запланирована для сбора мусора; то есть экземпляр доступен только для чтения после его создания, и невозможно предсказать, когда экземпляр будет удален из памяти компьютера. Поскольку экземпляры System.String неизменяемы, операции, которые, как представляется, изменяют существующий экземпляр, фактически создают его копию для управления. Следовательно, если объект String содержит конфиденциальную информацию, такую ​​как пароль, номер кредитной карты или личные данные, существует риск того, что информация будет раскрыта после ее использования, потому что ваше приложение не может удалить данные из памяти компьютера.

Объект SecureString похож на объект String тем, что он имеет текстовое значение. Однако значение объекта SecureString закреплено в памяти, может использовать механизм защиты, например шифрование, предоставляемое базовой операционной системой, может быть изменено до тех пор, пока ваше приложение не пометит его как доступное только для чтения и может быть удалено из памяти компьютера либо вашим приложением, вызывающим метод Dispose, либо сборщиком мусора .NET Framework.

https://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx