2012-11-09 6 views
6

Do tworzenia aplikacji używa się Microsoft Visual Studio 2010 i Microsoft .NET Framework 4. Aplikacja łączy się z bazą danych Microsoft SQL Server 2008. Aplikacja korzysta z dostawcy zarządzanego przez program Microsoft ADO.NET SQL Server. W przypadku niepowodzenia połączenia aplikacja rejestruje informacje o połączeniu, w tym pełny ciąg połączenia. Informacje są zapisywane jako zwykły tekst w pliku .config.Trwałe informacje o zabezpieczeniach w .Net 4

Należy upewnić się, że poświadczenia bazy danych są bezpieczne.

Który ciąg połączenia należy dodać do pliku .config?

A. Data source = myServerAddress; Initial Catalog = myDataBase; Zintegrowane zabezpieczenia = SSPI; Persist Security Info = false;

B. Data Source = myServerAddress; Initial Catalog = myDataBase; Zintegrowane zabezpieczenia = SSPI; Persist Security Info = true;

C. Dane źródło = myServerAddress; Initial Catalog = myDataBase; ID użytkownika = moja nazwa użytkownika; Password = myPassword; Persist Security Info = false;

D. Data source = myServerAddress; Initial Catalog = myDataBase; ID użytkownika = moja nazwa użytkownika; Password = myPassword; Persist Security Info = true;

Zgodnie z poradnikiem odpowiedź brzmi "A". Ale moim zdaniem odpowiedź brzmi "C". Jeśli używamy Zintegrowanego Bezpieczeństwa = SSPI, nie musimy podawać identyfikatora użytkownika i hasła. Tak więc Persist Security Info = false nie ma żadnego efektu.

Z tego co wiem, Persist Security Info działa tylko wtedy, gdy ciąg połączenia ma poświadczenia użytkownika.

Czy możesz mi doradzić, który z nich jest prawidłowy? Dzięki.

Odpowiedz

5

Masz rację. Persist Security Info = false działa tylko wtedy, gdy nazwa użytkownika i hasło są podane w ciągu połączenia. Ale pytanie brzmi: "Co powinieneś przechowywać w pliku .config" i biorąc pod uwagę, że "informacje są przechowywane jako zwykły tekst" nie powinieneś przechowywać UID i PWD w pliku konfiguracyjnym. Jeśli przechowujesz C, PWD i UID można wyodrębnić z pliku .config. Ale jeśli przechowujesz A, nie ma poświadczeń do wyodrębnienia.

Nie jestem pewien, dlaczego A ma "Persist Security Info=false", ale wygląda na to, że jest to dobra praktyka. przykłady Zobacz MSDN:

+0

*, ale wygląda na to, że jest to dobra praktyka * To również wygląda bardzo zbędny, ponieważ wartość domyślna to 'FALSE. –