|
|
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.
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 <machineKey>Næste:Sammenlign Tailscale, ZeroTier, WireGuard, OmniEdge og Ngrok for geo-netværksløsninger
|