Хорошо, я знаю, что об этом спрашивали тысячу раз, но окончательного решения не было найдено ... так что вот еще один действительно глупый вопрос!
У меня есть приложение Winforms 3.5 и использующее LINQ to SQL, поэтому строка подключения ВСЕГДА хранится в "app.config" по умолчанию (и VS2008 не примет никакого другого способа хранения этого - Ive даже попытался переписать это в сгенерированном IDE коде). При этом любому человеку, обладающему небольшим компьютерным ноу-хау, необходимо просто перейти в каталог установки приложения, найти файл [appname] .exe.config и открыть его, чтобы открыть Предположительно безопасный имя пользователя / пароль для доступа к базе данных. Даже если вы решите зашифровать / расшифровать этот раздел, это будет сделано только во время работы приложения, поэтому я предполагаю, что когда приложение закрыто, раздел connString возвращается к обычному тексту ..., который можно снова прочитать. (.... как ты побеждаешь?!?!)
Учитывая, что я использую LINQ и генерирую LinqDataContext, я хотел бы знать следующее:
- Может ли connstring не храниться где-либо еще, кроме app.config? (возможно, как в пользовательском файле настроек, который можно изменить после установки)
- Если вышеизложенное возможно, я не могу сохранить предварительно зашифрованную connstring в файле конфигурации (который, безусловно, не сможет быть прочитан) и в моем приложении, разрешать только дешифрование connstring всякий раз, когда соединение открыто?
Если ничего из этого не возможно, мне, возможно, придется вернуться к использованию традиционного ADO.NET (видя, что у меня уже есть сотни сохраненных процедур для всех операций CRUD) - по крайней мере, таким образом я смогу контролировать, как и где connstring сохраняется.
Кстати - извините, если это ювенильный / запутанный вопрос, и если вы чувствуете, что я не прав в чем-то, что объясняю, пожалуйста, дайте мне знать.
Большое спасибо!