Есть ли какие-то преимущества от использования SecureString в ASP.NET?

Если я правильно понимаю, это для хранения обычного текста вне памяти, чтобы приложение было защищено от эзотерических атак на память, кучу мусора или память, выгружаемую на диск. SecureString получает неуправляемые байты и потребляет по одному неуправляемому байту за раз - затем строка стирается из памяти. (Поправьте меня, если я уйду!)

В ASP.NET секрет собирается в веб-форме, которая отправляется обратно в HTTPS. Но затем объект Request превращает все значения запроса из формы в пары значений имени и помещает их в коллекцию, например Request ["TxtPassword"] - так что даже до того, как я смог получить строку, она уже была небезопасно записана в память. Хуже того, если бы я использовал элемент управления, то незащищенное представление будет иметь больше управляемых строк в свойстве TextBox.

Чтобы делать что-либо с этим SecureString, мне нужен API, который принимает неуправляемые строки - так что, похоже, я могу ' t использовать защищенную строку для сохраненного параметра процесса или чего-то еще.

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

Переключение на OAuth или авторизация Windows не подходят.

45
задан MatthewMartin 18 December 2010 в 16:45
поделиться