Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 2915|Svare: 0

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

[Kopier lenke]
Publisert på 15.08.2023 10:21:16 | | | |
Krav: Under utviklingsprosessen kan du ofte støte på noen krypterings- og dekrypteringsscenarier, for eksempel kan e-postautentisering bære en kryptert streng, og når brukeren klikker på lenken for å hoppe til grensesnittet, kan systemet dekryptere strengens innhold som normalt, og dermed realisere e-postautentiseringsfunksjonen.

Generer elementer ved hjelp av 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 Rollen til machineKey og hvordan man bruker den
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core tilbyr funksjoner for databeskyttelse:Innloggingen med hyperkoblingen er synlig.

Hovedpakke

Hovedpakkene som er involvert i databeskyttelse er som følger, som refereres til etter behov:

  • Microsoft.AspNetCore.DataProtection.Abstractions-standarden. Navngivning av NET CORE-abstraksjonslagets komponentpakke. Den inkluderer viktige grensesnitttjenester som IDataProtectionProvider og IDataProtector.
  • Microsoft.AspNetCore.DataProtection, inkludert kjerne-kryptografiske operasjoner, nøkkelhåndtering, konfigurasjon og utvidelse.
  • Microsoft.AspNetCore.DataProtection.Extensions-utvidelse. Gir en fabrikkmetode for å lage instanser og en lagringsutvidelsesmetode for nøkler. Denne pakken brukes i ikke-DI-modus.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementerer <machineKey>kompatibilitet med krypterings- og dekrypteringsmekanismene i ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation tilbyr en implementering av PBKDF2-passordhashingrutinen. Bruk det når du trenger hash-kryptering.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider er basert på Microsofts Provider-modell og brukes til å gi retningslinjer for opprettelse av instanser. Opprett et IDataProtector-objekt ved å kalle IDataProtectionProvider.CreateProtector(purpose)-metoden.
IDataProtector er en tjeneste ansvarlig for kryptering og dekryptering, som hovedsakelig tilbyr to typer metoder: beskytte og avbeskytte (hver type har mange overbelastnings- og utvidelsesmetoder). Enkel forståelse er at protect brukes til kryptering og unprotect brukes til dekryptering.
IDataProtectionProviders Create-metodeparameteren er en streng som gir isolasjonsfunksjonalitet. IDataProtectors laget med ikke-passerbare strenger vil få ulike krypteringsresultater selv om de krypterer det samme objektet. IDataProtector er også en implisitt IDataProtectionProvider, som også tilbyr CreateProtector(purpose)-metoden. Dette betyr at det enkelt kan implementeresMulti-tenant applikasjonsmodus



Her er noen ting å huske på:

IDataProtectionProvider- og IDataProtector-instanserGjengesikringMål.
Unprotect-metoden er å informere kalleren om at dekrypteringen feilet ved å kaste et unntak. Unntaksklassen er CryptographicException.

ASP.NET Core er enkel å bruke databeskyttelse

Et nytt grensesnitt legges til for å 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:Innloggingen med hyperkoblingen er synlig.



Nøkkelhåndtering

Hvis brukerprofilen er tilgjengelig, beholdes nøkkelen til%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmappe. Hvis operativsystemet er Windows, krypteres nøkkelen i hvile ved hjelp av DPAPI. Som vist nedenfor:



Nøkkelliv

Som standard er nøkkelenLivssyklusen er 90 dager。 Når nøkkelen utløper, genererer applikasjonen automatisk en ny nøkkel og setter den nye nøkkelen som den aktive nøkkelen. Så lenge de deaktiverte nøklene forblir på systemet, kan applikasjonen din dekryptere all data som er beskyttet av dem. For mer informasjon, se Nøkkelhåndtering.Innloggingen med hyperkoblingen er synlig.

Standardalgoritme

Standard lastbeskyttelsesalgoritmer som brukes er AES-256-CBC (for konfidensialitet) og HMACSHA256 (for autentisitet). Den 512-bits hovednøkkelen, som endres hver 90. dag, brukes til å utlede to undernøkler for disse algoritmene basert på hver nyttelast.

ASP.NET nøkkellagringsleverandør i Core

Filsystem: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, som krever referanse: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis-lagring: PersistKeysToStackExchangeRedis, referanse kreves: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referanse:Innloggingen med hyperkoblingen er synlig.

Klynget og distribuert

Hvis servernøkkelen er inkonsistent, for eksempel: server A-kryptering og server B-dekryptering, vil et unntak bli kastet (som vist i figuren nedenfor), og samme nøkkel må distribueres.



Konfigurer samme nøkkel som følger:

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



ASP.NET Kjernebeskyttelseskonfigurasjon

ASP.NET CORE tilbyr rik API-støtte, passordpersistens, konfigurasjon og tilpasningsfunksjoner.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage-scenario.
  • PersistKeysToFileSystem。 Lokalt filsystemlagringssystem som registrerer krypteringsalgoritmer, nøkler og avhengigheter.
  • ProtectKeysWith*。 Kryptering gis gjennom utvidelser av denne navnemetoden. For eksempel ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Sett nøkkelens levetid til 90 dager som standard.
  • SetApplicationName。 Sett navnet på appen. Som standard er databeskyttelsesmekanismer fullstendig isolert fra hver applikasjon. Nøkkeldeling mellom apper kan oppnås ved å sette samme appnavn.
  • DisableAutomaticKeyGeneration。 Forhindre at nøkkelen automatisk rulles tilbake. Mange ganger ønsker vi egentlig ikke at passord skal endres eller i en klyngetjeneste, vi har en dedikert tjeneste som er ansvarlig for tilbakerulling av nøkkeloppdateringer, og andre laster trenger bare å hente det fra et delt sted.
  • UseCryptographicAlgorithms。 Bruk tilpassede krypterings- og dekrypteringsalgoritmer


Referanse:Innloggingen med hyperkoblingen er synlig.





Foregående:Bruk PowerShell for å generere elementet &lt;machineKey&gt;
Neste:Sammenlign Tailscale, ZeroTier, WireGuard, OmniEdge og Ngrok for geo-nettverksløsninger
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com