У меня есть сценарий, который беспокоил меня в течение многих лет. Если вам нужно подключиться к базе данных или другому сервису (например, веб-сервису) с помощью имени пользователя и пароля, где будет самое безопасное место для хранения этой информации, если вы подключаетесь через сборку .NET? Я понимаю, что вам придется зашифровать пароль, но тогда вы столкнетесь с проблемой куриного яйца — хорошо — вы можете зашифровать его, но куда вы поместите ключ?
В .NET вы не можете жестко запрограммировать пароль, потому что вы можете декомпилировать код .NET.
Я рассматривал возможность использования прав на сборку с изолированным хранилищем, но MS рекомендует не хранить там незашифрованные секретные элементы, потому что привилегированные пользователи могут получить доступ, так что, опять же, мы перемещаем проблему из точки А в точку Б. администратор домена, которому не нужно знать об информации в базе данных, сможет получить доступ благодаря возможности быть администратором на любой рабочей станции в домене.
Вы можете зашифровать App.Config и Web.Config, но я считаю, что пользователи с привилегиями могут получить доступ к ключам.
Я думаю, что вы столкнулись с той же проблемой с DPAPI.
Я рассматривал возможность хранения паролей в зашифрованном виде в удаленной базе данных и получения их через аутентификацию ОС, но наш отдел запрещает хранение паролей на серверах баз данных.Я почти уверен, что застрял и хотел подтверждения.