2008-12-11 9 views
5

Robię komponent, który wykorzystuje dane do połączenia z bazą danych, dane te zawierają identyfikator użytkownika i hasło, przechowuje te wartości w prywatnych zmiennych, ale każdy programista może zobaczyć wartość w debugerze po inicjalizacji, więc zastanawiam się, jak SqlConnection robi, aby ukryć tę wartość, gdy widzę wartość właściwości ConnectionString Widzę wszystkie informacje oprócz hasła, jego przechowywanie gdzieś, ale nie czyni go widocznym, nawet w debugerze nie widzę żadnej zmiennej przechowującej hasło, wiem, że mogę zabezpieczyć hasło za pomocą SecureString, ale zastanawiam się, jak jest implementacja obiektu SqlConnection.jak sqlConnection ukrywa hasło ciągu połączenia

Dzięki.

Juan Zamudio

Odpowiedz

2

Z manual:

ConnectionString jest podobny do OLE DB ciąg połączenia, ale nie jest identyczna. W przeciwieństwie do OLE DB lub ADO, zwracany ciąg połączenia to taki sam, jak zestaw użytkownika ConnectionString, bez informacji o zabezpieczeniu , jeśli wartość Info Persist Security jest ustawiona na wartość false (domyślnie). Dostawca danych .NET Framework dla SQL Server nie zachowuje ani nie zwraca hasła w ciągu połączenia , chyba że ustawisz Persist Security Info na true.

Nie jestem pewien, w jaki sposób jest to realizowane. Moje niezweryfikowane domysły jest to, że wypełnia strukturę z parametrami bezpieczeństwa, które następnie wysyła do serwera, nigdy nie przechowują ich w rzeczywistości, chyba że ustawisz Persist Security Info na true.

Powiązane problemy