2010-10-18 12 views

Odpowiedz

8

Nope - całkowicie bezpieczne *

Wszystko robisz mówi, że masz zamiar używać poświadczeń (zazwyczaj) do użytkownika systemu Windows, że proces jest uruchomiona w ramach w celu uwierzytelnienia z SQL Server (w przeciwieństwie do podania nazwy użytkownika i hasła).

W rzeczywistości w ogóle korzystanie ze zintegrowanych zabezpieczeń jest uważane za bardziej bezpieczne.

(*) Oczywiście zawsze zależy to od Twojej dokładnej sytuacji, ale w ogólnym przypadku tak, to w porządku.

+1

Hmm, czy uważasz, że to niekoniecznie musi być prawdziwe dla serwera WWW? Jeśli zostanie naruszony, magazyn dbase jest również szeroko otwarty. Zabezpieczenie hasłem na serwerze nie jest takie trudne, jest zamek na drzwiach do serwerowni. –

+2

@Hany, chyba że żartujesz, to kiepski argument. Jeśli serwer zostanie przejęty, atakujący będzie miał dostęp do połączenia u/p na bazie sql, więc nie jest ono lepsze niż zintegrowane. W obu przypadkach, jak łatwo atakujący może uzyskać z tej pozycji, aby uzyskać dostęp do DB i ile mogą zrobić, będzie się różnić w zależności od konkretnej konfiguracji. Jeśli naprawdę chcesz zabezpieczyć się przed tym scenariuszem, nie chcesz, aby serwer WWW trafiał bezpośrednio w DB. – eglasius

+0

@eglasius - nie, nie użyłem buźkę. Działasz od założenia, że ​​atakujący użyje istniejącego połączenia. Robi to * twardy * sposób, jeśli zintegrowane zabezpieczenia są włączone. Mógłby po prostu stworzyć własne połączenie, nie trzeba podawać trudnej do odgadnięcia nazwy użytkownika + hasła. –

1

Może to być dobre lub złe w zależności od konta używanego przez IIS do uruchamiania aplikacji internetowej.

W każdym przypadku istnieje wyraźna korzyść, że identyfikator użytkownika SQL i hasło nie pojawiają się w łańcuchu połączenia; zawsze dobra rzecz.

Należy jednak dokładnie skonfigurować środowisko produkcyjne. Sugerowałbym utworzenie odrębnego konta użytkownika dla usług IIS, który będzie używany do uruchamiania aplikacji internetowej. To konto użytkownika można skonfigurować tak, aby miało dostęp tylko do zasobów SQL wymaganych przez aplikację. To chroniłoby Cię przed łatwym dostępem do innych aplikacji w przypadku naruszenia zabezpieczeń Twojej aplikacji WWW.

Słyszałem programistów wykonujących akrobacje gdzie ciąg połączenia SQL z identyfikatorem użytkownika i hasło są ładowane w czasie wykonywania z zaszyfrowanego zasobu :-)

+1

Acrobatics? Jest wbudowany w obsługę zaszyfrowanych ciągów połączenia SQL. Nie jest to szczególnie trudne. – Brian

+1

@Brian - znacznie lepiej jest zablokować uprawnienia konta SQL, niż tylko szyfrować sam ciąg połączenia. Wolę korzystać z procedur przechowywanych dla 100% dostępu SQL i zezwalać użytkownikowi na wykonywanie uprawnień. W ten sposób, nawet jeśli atakujący ma hasło, może zrobić niewiele więcej, niż sama aplikacja może zrobić. Jednak najlepszym rozwiązaniem będzie użycie zarówno uprawnień SQL, jak i szyfrowanego ciągu połączenia. – NightOwl888

+0

@ NightOwl888 - Zgadzam się, że podjęcie wielu środków ostrożności jest dobrą praktyką. [How To: Secure Connection Strings przy użyciu kontroli źródła danych] (https://msdn.microsoft.com/en-us/library/ms178372.aspx) – myidealab

1

Odpowiedź na tytułowe pytanie:
Powinieneś nie dotykaj (mniej używaj) niczego w środowisku produkcyjnym, gdy masz takie pytania lub wątpliwości!

Odpowiedź na pytanie ciała:
SQL Server w produkcji nie powinny być włączone do uwierzytelniania SQL Server na wszystkich

UPDATE:
Jestem zaskoczony, aby zobaczyć, że wszystkie odpowiedzi używać probabilistyczny „to zależy”, „w niektóre przypadki "," więcej "możliwości.

Powiązane problemy