Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 2915|Svar: 0

[Kilde] ASP.NET Core (22) er baseret på IDataProtectionProvider databeskyttelse

[Kopier link]
Opslået på 15/08/2023 10.21.16 | | | |
Krav: Under udviklingsprocessen kan du ofte støde på nogle krypterings- og dekrypteringsscenarier, for eksempel kan e-mailautentificering bære en krypteret streng, og når brugeren klikker på linket for at hoppe til interfacet, kan systemet dekryptere strengens indhold normalt og dermed realisere e-mailautentificeringsfunktionen.

Generer elementer ved hjælp af PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Krypter data med ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET MachineKeys rolle og hvordan man bruger den
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core tilbyder databeskyttelsesfunktioner:Hyperlink-login er synlig.

Hovedpakke

De vigtigste pakker, der indgår i databeskyttelse, er som følger, som refereres til efter behov:

  • Microsoft.AspNetCore.DataProtection.Abstractions-standarden. NET CORE abstraktionslags komponentnavngivning. Den omfatter større grænsefladetjenester som IDataProtectionProvider og IDataProtector.
  • Microsoft.AspNetCore.DataProtection, inklusive kerne-kryptografiske operationer, nøglehåndtering, konfiguration og udvidelsesmuligheder.
  • Microsoft.AspNetCore.DataProtection.Extensions udvidelse. Giver en fabriksmetode til oprettelse af instanser og en lagringsudvidelsesmetode til nøgler. Denne pakke bruges i ikke-DI-tilstand.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementerer <machineKey>kompatibilitet med krypterings- og dekrypteringsmekanismerne i ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation leverer en implementering af PBKDF2 adgangskodehashing-rutinen. Brug det, når du har brug for hash-kryptering.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider er baseret på Microsofts Provider-model og bruges til at levere politikker for oprettelse af instanser. Opret et IDataProtector-objekt ved at kalde IDataProtectionProvider.CreateProtector(purpose)-metoden.
IDataProtector er en tjeneste, der er ansvarlig for kryptering og dekryptering, og som hovedsageligt tilbyder to typer metoder: beskytte og afbeskytte (hver type har mange overbelastnings- og udvidelsesmetoder). En simpel forståelse er, at protect bruges til kryptering, og unprotect bruges til dekryptering.
IDataProtectionProvider's Create-metodeparameteren er en streng, der leverer isolationsfunktionalitet. IDataProtectors oprettet med ikke-passerbare strenge vil få forskellige krypteringsresultater, selvom de krypterer det samme objekt. IDataProtector er også en implicit IDataProtectionProvider, som også leverer CreateProtector(purpose)-metoden. Det betyder, at det nemt kan implementeresMulti-tenant applikationstilstand



Her er nogle ting, du bør huske på:

IDataProtectionProvider og IDataProtector-instanserGevindsikkerhedMål.
Unprotect-metoden er at informere kalderen om, at dekrypteringen fejlede ved at kaste en undtagelse. Undtagelsesklassen er CryptographicException.

ASP.NET Core er brugervenlig databeskyttelse

En ny grænseflade tilføjes til at kryptere og dekryptere data, og koden er som følger:

Testen er som følger:



IDataProtectionProvider er et singleton-mønster med følgende kode:Hyperlink-login er synlig.



Nøglehåndtering

Hvis brugerprofilen er tilgængelig, beholdes nøglen til%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmappe. Hvis operativsystemet er Windows, krypteres nøglen i hvile ved hjælp af DPAPI. Som vist nedenfor:



Nøgleliv

Som standard er nøglenLivscyklussen er 90 dage。 Når nøglen udløber, genererer applikationen automatisk en ny nøgle og sætter den nye nøgle som den aktive nøgle. Så længe de deaktiverede nøgler forbliver på systemet, kan din applikation dekryptere alle data, de beskytter. For mere information, se Nøglehåndtering.Hyperlink-login er synlig.

Standardalgoritme

De standard belastningsbeskyttelsesalgoritmer, der anvendes, er AES-256-CBC (for fortrolighed) og HMACSHA256 (for ægthed). Den 512-bit hovednøgle, som ændres hver 90. dag, bruges til at udlede to undernøgler til disse algoritmer baseret på hver nyttelast.

ASP.NET nøglelagringsudbyder i Core

Filsystem: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, som kræver reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis-lagring: PersistKeysToStackExchangeRedis, reference krævet: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Henvisning:Hyperlink-login er synlig.

Klynget og distribueret

Hvis servernøglen er inkonsistent, for eksempel: server A-kryptering og server B-dekryptering, vil en undtagelse blive kastet (som vist i figuren nedenfor), og den samme nøgle skal implementeres.



Konfigurer den samme nøgle som følger:

Når programmet kører, genererer det automatisk en key-*.xml key-fil under mappen publish_itsvse, hold denne fil konsistent på forskellige servere! Som vist nedenfor:



ASP.NET Konfiguration af Kernebeskyttelse

ASP.NET CORE tilbyder rig API-understøttelse, adgangskodepersistens, konfiguration og tilpasningsfunktioner.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage-scenarie.
  • PersistKeysToFileSystem。 Lokal filsystemlagringsordning, der registrerer krypteringsalgoritmer, nøgler og afhængigheder.
  • ProtectKeysWith*。 Kryptering leveres gennem udvidelser af denne navngivningsmetode. For eksempel ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Sæt nøglens levetid til 90 dage som standard.
  • SetApplicationName。 Sæt appens navn. Som standard er databeskyttelsesmekanismer fuldstændig isoleret fra hver applikation. Nøgledeling mellem apps kan opnås ved at sætte det samme app-navn.
  • DisableAutomaticKeyGeneration。 Forhindre, at nøglen automatisk rulles tilbage. Ofte ønsker vi egentlig ikke, at adgangskoder skal ændres eller i en klyngetjeneste, vi har en dedikeret tjeneste, der er ansvarlig for nøgleopdaterings-rollback, og andre payloads skal bare hente det fra et delt sted.
  • UseCryptographicAlgorithms。 Brug brugerdefinerede krypterings- og dekrypteringsalgoritmer


Henvisning:Hyperlink-login er synlig.





Tidligere:Brug PowerShell til at generere elementet &lt;machineKey&gt;
Næste:Sammenlign Tailscale, ZeroTier, WireGuard, OmniEdge og Ngrok for geo-netværksløsninger
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com