ASP.NET MVC 5 - представлена ​​модель SecureString

У меня есть приложение C# ASP.net MVC, где сотни пользователей ежедневно вводят очень конфиденциальные данные. Клиентский браузер подключается к моему бэкэнду через сквозное зашифрованное соединение TLS, поэтому я не беспокоюсь о том, что данные не будут зашифрованы HTML-формой.

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

Я знаю, что могу использовать SecureString, чтобы иметь возможность звонить Dispose() на переменную после того, как я использовал его, чтобы убедиться, что он удаляется из памяти, что хорошо. Тем не менее, я не уверен, как я могу использовать это с Model, Ниже приведен фрагмент кода.

public class InputModel
    {
         Private String confidential;
         // Getters and Setters
    }

public ActionResult Index(InputModel inputModel)
    {
         //Create a SecureString "secureString" and store inputModel.confidential in
    }

Теперь я могу распоряжаться secureString в любое время, но inputModel.confidential будет оставаться в памяти, что делает использование SecureString неактуальным.

Как я могу справиться с этим?

Что нужно иметь в виду:

  1. Мой сервер довольно безопасен. Я не ожидаю, что SecureString поможет мне зашифровать переменную от вируса, который может работать на сервере. Я просто хочу убедиться, что никто не сможет извлечь учетные данные из дампа памяти (или, по крайней мере, значительно уменьшить количество учетных данных, которые можно получить), если к диску обращаются.
  2. Я использую TLS во всех клиент-серверных коммуникациях. Мне не нужно ничего, чтобы быть зашифрованным приложением.

0 ответов

Другие вопросы по тегам