Czy jest złą praktyką używanie Integrated Security=True
na serwerze produkcyjnym w ASP.NET?Czy powinienem używać "Integrated Security = True" w środowisku produkcyjnym?
Odpowiedz
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.
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. –
@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
@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. –
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 :-)
Acrobatics? Jest wbudowany w obsługę zaszyfrowanych ciągów połączenia SQL. Nie jest to szczególnie trudne. – Brian
@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
@ 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
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.
- 1. Czy można bezpiecznie używać opcji węzła v8 w środowisku produkcyjnym?
- 2. Czy należy używać wykresów google w środowisku produkcyjnym?
- 3. Utwórz DB w środowisku produkcyjnym w szynach
- 4. Mix.env/0 odpowiednik w środowisku produkcyjnym?
- 5. Co należy rejestrować/śledzić w środowisku produkcyjnym?
- 6. django-seler w produkcyjnym środowisku z wieloma serwerami
- 7. Budowanie z ember CLI w środowisku produkcyjnym
- 8. Czy powinienem używać czcionek typograficznych?
- 9. Nie można wyłączyć rejestrowania SQL w moim środowisku produkcyjnym Rails
- 10. Jakikolwiek sposób debugowania aplikacji z zestawem danych w środowisku produkcyjnym?
- 11. Czy powinienem używać takiego constexpr?
- 12. Czy należy używać mechanizmu wykonawczego zabezpieczeń Anti-XSS Security w środowisku ASP.NET MVC?
- 13. Czy powinienem używać Universal-ctags?
- 14. Jakiego JSObject powinienem używać?
- 15. Symfony 2 Assetic css i js 404 w środowisku produkcyjnym
- 16. Czy powinienem używać autoboxa w Perlu?
- 17. Czy powinienem używać `this` w klasie?
- 18. Czy powinienem używać weakSelf w zagnieżdżonych blokach?
- 19. Czy powinienem używać deklaracji kodowania w Python3?
- 20. Czy w tej sytuacji powinienem używać Drools?
- 21. Numpy: Czy powinienem używać newaxis czy None?
- 22. Czy powinienem ustawić IsReusable na True w moich HttpHandlers?
- 23. Nazwa hosta jest niezdefiniowana w Logback/SLF4J w środowisku produkcyjnym.
- 24. Konfiguracja solr solr z szynami w środowisku produkcyjnym
- 25. Uzyskiwanie dostępu do ustawień meteoru w własnym środowisku produkcyjnym
- 26. Jak ustawić zmienne środowiskowe ASP.NET 5 w środowisku produkcyjnym
- 27. Jaka jest różnica między Trusted_Connection i Integrated Security w ciągu połączenia?
- 28. Czy należy używać programu Security Manager w aplikacjach WWW Java?
- 29. Czy powinienem używać nav lub ul
- 30. Czy powinienem używać funkcji PHPSRV PHP?
Czy jest to ciąg połączenia w pliku konfiguracyjnym? – slugster
tak dla pliku konfiguracyjnego – user441365