Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 2915|Odpowiedź: 0

[Źródło] ASP.NET Core (22) opiera się na ochronie danych IDataProtectionProvider

[Skopiuj link]
Opublikowano 15.08.2023 10:21:16 | | | |
Wymagania: Podczas procesu tworzenia często można napotkać scenariusze szyfrowania i deszyfrowania, na przykład uwierzytelnianie poczty elektronicznej może zawierać zaszyfrowany ciąg znaków, a gdy użytkownik kliknie link, aby przejść do interfejsu, system może normalnie odszyfrować treść łańcucha, realizując tym samym funkcję uwierzytelniania poczty.

Generuj elementy za pomocą PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Szyfrowanie danych za pomocą ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Rola machineKey i sposób jego używania
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core oferuje funkcje ochrony danych:Logowanie do linku jest widoczne.

Pakiet główny

Główne pakiety związane z ochroną danych to: następujące zestawy, które są w razie potrzeby cytowane:

  • Standard Microsoft.AspNetCore.DataProtection.Abstractions. Nazwa pakietów pakietów na warstwie abstrakcji NET CORE. Obejmuje główne usługi interfejsu, takie jak IDataProtectionProvider i IDataProtector.
  • Microsoft.AspNetCore.DataProtection, w tym podstawowe operacje kryptograficzne, zarządzanie kluczami, konfigurację i rozszerzalność.
  • Rozszerzenie Microsoft.AspNetCore.DataProtection.Extensions. Zapewnia fabrycznej metody tworzenia instancji oraz metodę rozszerzenia pamięci dla kluczy. Ten pakiet jest używany w trybie nie-DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementuje <machineKey>kompatybilność z mechanizmami szyfrowania i deszyfrowania w ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation oferuje implementację procedury haszowania haseł PBKDF2. Używaj go, gdy potrzebujesz szyfrowania za pomocą skrótu.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider opiera się na modelu Provider firmy Microsoft i służy do tworzenia polityk tworzenia instancji. Utwórz obiekt IDataProtector, wywołując metodę IDataProtectionProvider.CreateProtector(purpose).
IDataProtector to usługa odpowiedzialna za szyfrowanie i deszyfrowanie, która oferuje głównie dwa typy metod: protect i unprotect (każdy typ ma wiele metod przeciążenia i rozszerzania). Proste rozumienie jest takie, że protect służy do szyfrowania, a unprotect do deszyfrowania.
Parametr metody Create w IDataProtectionProvider to ciąg znaków zapewniający funkcjonalność izolacji. IDataProtectory utworzone z nieprzepuszczalnymi ciągami znaków będą miały różne wyniki szyfrowania, nawet jeśli szyfrują ten sam obiekt. Sam IDataProtector jest również niejawnym IDataProtectionProvider, który również oferuje metodę CreateProtector(purpose). Oznacza to, że można go łatwo wdrożyćTryb aplikacji wielodzierżawców



Oto kilka rzeczy, o których warto pamiętać:

Instancje IDataProtectionProvider i IDataProtectorBezpieczeństwo gwintuCel.
Metoda niechroniona polega na poinformowaniu dzwoniącego o niepowodzeniu odszyfrowania poprzez wyrzucenie wyjątku. Klasą wyjątków jest CryptographicException.

ASP.NET Core jest prosty w użyciu w ochronie danych

Dodano nowy interfejs do szyfrowania i odszyfrowywania danych, a kod wygląda następująco:

Test wygląda następująco:



IDataProtectionProvider to wzorzec singleton z następującym kodem:Logowanie do linku jest widoczne.



Zarządzanie kluczami

Jeśli profil użytkownika jest dostępny, klucz jest zachowywany na%LOCALAPPDATA%\ASP.NET\DataProtection-Keysfolder. Jeśli systemem operacyjnym jest Windows, klucz jest szyfrowany w spoczynku za pomocą DPAPI. Jak pokazano poniżej:



Kluczowe życie

Domyślnie kluczCykl życia trwa 90 dni。 Gdy klucz wygasa, aplikacja automatycznie generuje nowy klucz i ustawia nowy klucz jako klucz aktywny. Dopóki dezaktywowane klucze pozostają w systemie, aplikacja może odszyfrować dowolne dane chronione przez nie. Więcej informacji można znaleźć w artykule zarządzanie kluczami.Logowanie do linku jest widoczne.

Domyślny algorytm

Domyślne algorytmy ochrony obciążenia to AES-256-CBC (dla poufności) oraz HMACSHA256 (dla autentyczności). 512-bitowy klucz główny, który zmienia się co 90 dni, służy do wyprowadzenia dwóch podkluczy dla tych algorytmów na podstawie każdego ładunku.

ASP.NET dostawca pamięci kluczowej w Core

System plików: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, co wymaga referency: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis storage: PersistKeysToStackExchangeRedis, wymagane odniesienie: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Odniesienie:Logowanie do linku jest widoczne.

Klastrowanie i rozproszone

Jeśli klucz serwera jest niespójny, na przykład: szyfrowanie serwera A i deszyfrowanie serwera B, zostanie wyrzucony wyjątek (jak pokazano na poniższym rysunku) i ten sam klucz musi zostać wdrożony.



Skonfiguruj ten sam klucz w następujący sposób:

Po uruchomieniu programu automatycznie generuje plik klucza *.xml w folderze publish_itsvse, utrzymuj ten plik spójny na różnych serwerach! Jak pokazano poniżej:



ASP.NET Konfiguracja ochrony rdzenia

ASP.NET CORE oferuje bogate wsparcie API, utrwalanie haseł, konfigurację i funkcje personalizacji.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenariusz.
  • PersistKeysToFileSystem。 Lokalny schemat przechowywania danych w systemie plików, który rejestruje algorytmy szyfrowania, klucze i zależności.
  • ProtectKeysWith*。 Szyfrowanie jest realizowane poprzez rozszerzenia tej metody nazewnictwa. Na przykład ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Domyślnie ustaw czas życia klucza na 90 dni.
  • SetApplicationName。 Ustaw nazwę aplikacji. Domyślnie mechanizmy ochrony danych są całkowicie odizolowane od każdej aplikacji. Dzielenie kluczy między aplikacjami można uzyskać, ustawiając tę samą nazwę aplikacji.
  • DisableAutomaticKeyGeneration。 Zapobiegaj automatycznemu cofnięciu klucza. Często nie chcemy, żeby hasła zmieniały się lub w usłudze klastrowej mamy dedykowaną usługę odpowiedzialną za cofanie aktualizacji kluczy, a inne payloady muszą pobierać je ze wspólnego miejsca.
  • UżyjCryptographicAlgorithms。 Używaj niestandardowych algorytmów szyfrowania i deszyfrowania


Odniesienie:Logowanie do linku jest widoczne.





Poprzedni:Użyj PowerShell do wygenerowania elementu &lt;machineKey&gt;
Następny:Porównaj Tailscale, ZeroTier, WireGuard, OmniEdge i Ngrok dla rozwiązań geo-sieciowych
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com