Tematy dotyczące zabezpieczeń platformy ASP.NET Core
Platforma ASP.NET Core umożliwia deweloperom konfigurowanie zabezpieczeń i zarządzanie nimi. Poniższa lista zawiera linki do tematów dotyczących zabezpieczeń:
- Authentication
- Autoryzacja
- Ochrona danych
- Wymuszanie protokołu HTTPS
- Bezpieczne przechowywanie wpisów tajnych aplikacji w czasie projektowania
- Zapobieganie atakom XSRF/CSRF
- Udostępnianie zasobów między źródłami (CORS)
- Zapobieganie atakom z użyciem skryptów między witrynami (XSS)
Te funkcje zabezpieczeń umożliwiają tworzenie niezawodnych i bezpiecznych aplikacji platformy ASP.NET Core.
Aby uzyskać Blazor pokrycie zabezpieczeń, które dodaje lub zastępuje wskazówki w tym węźle, zobacz ASP.NET Core Blazor authentication and authorization (Uwierzytelnianie podstawowe i autoryzacja) oraz inne artykuły w temacie BlazorSecurity and node (Zabezpieczenia i Identity węzeł).
Funkcje zabezpieczeń platformy ASP.NET Core
ASP.NET Core udostępnia wiele narzędzi i bibliotek do zabezpieczania aplikacji ASP.NET Core, takich jak wbudowani identity dostawcy i usługi innych firm identity , takie jak Facebook, Twitter i LinkedIn. Platforma ASP.NET Core udostępnia kilka podejść do przechowywania wpisów tajnych aplikacji.
Uwierzytelnianie i autoryzacja
Uwierzytelnianie to proces, w którym użytkownik podaje poświadczenia porównywane następnie z tymi przechowywanymi w systemie operacyjnym, bazie danych, aplikacji lub zasobie. Jeśli są zgodne, użytkownicy są uwierzytelniani pomyślnie, a następnie mogą wykonywać akcje, dla których są autoryzowani podczas procesu autoryzacji. Autoryzacja oznacza proces, który określa, co użytkownik może robić.
Innym sposobem myślenia o uwierzytelnianiu jest traktowanie go jako sposobu dostawania się do miejsca, takiego jak serwer, baza danych, aplikacja lub zasób, podczas gdy autoryzacja decyduje o tym, które akcje użytkownik może wykonać na których obiektach wewnątrz tego miejsca (serwera, bazy danych lub aplikacji).
Typowe luki w zabezpieczeniach oprogramowania
Platformy ASP.NET Core i EF zawierają funkcje, które ułatwiają zabezpieczanie aplikacji i zapobieganie naruszeniom zabezpieczeń. Poniższa lista linków prowadzi do dokumentacji zawierającej szczegółowe informacje o technikach unikania najczęstszych luk w zabezpieczeniach w aplikacjach internetowych:
- Zapobieganie atakom z użyciem skryptów między witrynami (XSS)
- Ataki polegających na wstrzyknięciu kodu SQL
- Ataki z fałszowaniem żądań międzywitrynowych (XSRF/CSRF)
- Ataki na otwarte przekierowywanie
Istnieje więcej luk w zabezpieczeniach, o których należy wiedzieć. Aby uzyskać więcej informacji, zobacz inne artykuły w sekcji Zabezpieczenia i rozwiązanie Identity spisu treści.
Bezpieczne przepływy uwierzytelniania
Zalecamy użycie najbezpieczniejszej opcji bezpiecznego uwierzytelniania. W przypadku usług platformy Azure najbezpieczniejsze uwierzytelnianie to tożsamości zarządzane.
Unikaj udzielania poświadczeń hasła właściciela zasobu, ponieważ:
- Uwidacznia hasło użytkownika klientowi.
- Jest istotnym zagrożeniem bezpieczeństwa.
- Należy używać tylko wtedy, gdy inne przepływy uwierzytelniania nie są możliwe.
Tożsamości zarządzane to bezpieczny sposób uwierzytelniania w usługach bez konieczności przechowywania poświadczeń w kodzie, zmiennych środowiskowych lub plikach konfiguracji. Tożsamości zarządzane są dostępne dla usług platformy Azure i mogą być używane z usługami Azure SQL, Azure Storage i innymi usługami platformy Azure:
- Tożsamości zarządzane w usłudze Microsoft Entra for Azure SQL
- Tożsamości zarządzane dla usług App Service i Azure Functions
- Bezpieczne przepływy uwierzytelniania
Po wdrożeniu aplikacji na serwerze testowym można użyć zmiennej środowiskowej, aby ustawić parametry połączenia na testowy serwer bazy danych. Aby uzyskać więcej informacji, zobacz Konfiguracja. Zmienne środowiskowe są zwykle przechowywane w postaci zwykłego, niezaszyfrowanego tekstu. W przypadku naruszenia zabezpieczeń maszyny lub procesu zmienne środowiskowe mogą być dostępne dla niezaufanych stron. Zalecamy używanie zmiennych środowiskowych do przechowywania parametry połączenia produkcyjnych, ponieważ nie jest to najbezpieczniejsze podejście.
Wytyczne dotyczące danych konfiguracji:
- Nigdy nie przechowuj haseł ani innych poufnych danych w kodzie dostawcy konfiguracji ani w plikach konfiguracji w postaci zwykłego tekstu. Narzędzie Menedżer wpisów tajnych może służyć do przechowywania wpisów tajnych w środowisku tworzenia.
- Nie używaj wpisów tajnych produkcji w środowiskach tworzenia ani testowania.
- Określaj wpisy tajne poza projektem, aby nie można było ich przypadkowo zatwierdzić w repozytorium kodu źródłowego.
Wytyczne dotyczące danych konfiguracji:
- Nigdy nie przechowuj haseł ani innych poufnych danych w kodzie dostawcy konfiguracji ani w plikach konfiguracji w postaci zwykłego tekstu. Narzędzie Menedżer wpisów tajnych może służyć do przechowywania wpisów tajnych w środowisku tworzenia.
- Nie używaj wpisów tajnych produkcji w środowiskach tworzenia ani testowania.
- Określaj wpisy tajne poza projektem, aby nie można było ich przypadkowo zatwierdzić w repozytorium kodu źródłowego.
Aby uzyskać więcej informacji, zobacz:
- Zalecenia dotyczące najlepszych rozwiązań zarządzanych identity
- Nawiązywanie połączenia z aplikacji z zasobami bez obsługi poświadczeń w kodzie
- Usługi platformy Azure, które mogą uzyskiwać dostęp do innych usług przy użyciu tożsamości zarządzanych
- IETF OAuth 2.0 Best Current Practice (Najlepsze rozwiązanie w zakresie zabezpieczeń protokołu OAuth 2.0)
Aby uzyskać informacje na temat innych dostawców usług w chmurze, zobacz:
- AWS (Amazon Web Services): AWS usługa zarządzania kluczami (KMS)
- Omówienie usługi Google Cloud usługa zarządzania kluczami
Dodatkowe zasoby
- Wprowadzenie do rozwiązania Identity na platformie ASP.NET Core
- Włączanie generowania kodu QR dla aplikacji uwierzytelniającego TOTP w usłudze ASP.NET Core
- Uwierzytelnianie przy użyciu usług Facebook i Google na platformie ASP.NET Core
- Identity rozwiązania do zarządzania dla aplikacji internetowych platformy .NET