6

Przeprowadzamy migrację jednej z naszych witryn do ASP.Net. Nie chcemy używać zintegrowanych zabezpieczeń, które wykorzystują konto Windows do łączenia się z serwerem sql (nie wchodząc w to, dlaczego, jest to po prostu niemożliwe). Stworzyliśmy nazwę użytkownika i hasło, aby połączyć się z SQL Server, i chcielibyśmy użyć tej nazwy użytkownika i hasła, jednak nie chcemy, aby inni programiści zobaczyli te informacje (łatwo odczytać z web.config) .... Wiem może być zaszyfrowany, ale może być równie łatwo odszyfrowany przez deweloperów - plus szyfrowanie ma wydajność.. Połączenie z serwerem SQL Server - ukrywanie hasła przed innymi programistami

Czy istnieje rozwiązanie tego problemu?

Odpowiedz

2

tutaj jest dobry tutorial Encrypting Configuration Information in ASP.NET 2.0 Applications

Tylko nie przekazywać innym deweloperom kluczową

Ewentualnie można zablokować uwierzytelniania SQL za pomocą zainstalowanych certyfikatów. W ten sposób ustawiasz zabezpieczenia na podstawie klienta, a nie użytkownika. http://msdn.microsoft.com/en-us/library/ff649255.aspx

Nasza standardowa praktyka polega na używaniu jednego "Loginu programisty" używanego w programistycznej bazie danych, która ma ograniczony dostęp i ma inną nazwę użytkownika/hasło do skrzynki produkcyjnej. Programiści nie mają dostępu do skrzynki produkcyjnej, tylko wiodący programiści, a następnie plik produkcyjny web.config jest kopiowany za pośrednictwem skryptu wdrażania.

+1

Dotyczy to moich i twoich komentarzy, ponieważ nigdy nie zaszyfrowałem pliku web.config. Ale po przeczytaniu twojego linku, co uniemożliwia deweloperowi ustawienie obiektu w górę (dim sqlConn jako nowy sqlconnection (getConfigSection), autoodszyfrowanie IIS), a następnie ustawienie zmiennej łańcuchowej = object.connectionString? Lub za pomocą debuggera, aby uzyskać te informacje, wykonując krok po kroku debugowanie? – Tommy

+0

będziesz musiał uwierzytelnić ze stacji roboczej lub certyfikatu, ponieważ wszyscy programiści będą mieli dostęp do debuggera – Glennular

0

Czy programiści potrzebują dostępu do pliku web.config? Jeśli tak, myślę, że możesz nie mieć szczęścia. Jeśli nie, to znaczy, że nie muszą zmieniać pliku web.config, zmień uprawnienia, aby tylko administratorzy i proces asp.net mogli odczytać plik.

0

Z mojego doświadczenia wynika, że ​​trudno jest ukryć takie rzeczy przed wewnętrznymi programistami. Nawet zaszyfrowanie informacji konfiguracyjnych w webconfigu nadal będzie pokazywane, jeśli twoi programiści po prostu przejdą przez kod ...

Zgaduję, że gdybyś to zrobił, mógłbyś stworzyć prywatny stały ciąg w kodzie dla twojego DB ciąg, a następnie użyj aplikacji Dotfuscator lub podobnej na skompilowanej aplikacji. Oczywiście kod źródłowy również musiałby zostać zaszyfrowany, inaczej twoi programiści mogliby uniemożliwić dostęp do niego.

0

Nie można naprawdę chronić hasła przed programistami - poza tym, jaki ma sens? Co można zrobić, to mieć oddzielny serwer programistyczny, do którego programiści mają dostęp i środowisko produkcyjne, do którego nie mają dostępu.

Czy deweloperzy nie muszą kiedykolwiek logować się bezpośrednio do bazy danych, aby przeprowadzić testy lub coś podobnego? jeśli tak, to sensowne byłoby wykonanie testu za pomocą tego samego konta, którego używa aplikacja, w przeciwnym razie wyniki testu mogą nie odzwierciedlać rzeczywistości.

0

prompt for the password, po podłączeniu po raz pierwszy i śledzeniu przebiegu w sesji. Teraz będziesz mógł połączyć bazę danych z dowolnego miejsca. Przekieruj wszystkich na stronę niedostępną dla aplikacji, aby reszta użytkowników nie posiadała hasła.