Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 2915|Antwoord: 0

[Bron] ASP.NET Core (22) is gebaseerd op IDataProtectionProvider gegevensbescherming

[Link kopiëren]
Geplaatst op 15-08-2023 10:21:16 | | | |
Vereisten: Tijdens het ontwikkelproces kunt u vaak enkele encryptie- en decryptiescenario's tegenkomen, bijvoorbeeld kan e-mailauthenticatie een versleutelde string dragen, en wanneer de gebruiker op de link klikt om naar de interface te springen, kan het systeem de inhoud van de string normaal ontsleutelen en zo de e-mailauthenticatiefunctie realiseren.

Genereer elementen met PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Versleutel gegevens met ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET De rol van machineKey en hoe deze te gebruiken
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core biedt gegevensbeschermingsfuncties:De hyperlink-login is zichtbaar.

Hoofdpakket

De belangrijkste pakketten die bij gegevensbescherming betrokken zijn, zijn als volgt, die indien nodig worden verwezen:

  • Microsoft.AspNetCore.DataProtection.Abstractions standaard. NET CORE-componentenbenaming van abstractielaag-pakketten. Het omvat belangrijke interfacediensten zoals IDataProtectionProvider en IDataProtector.
  • Microsoft.AspNetCore.DataProtection, inclusief kern cryptografische operaties, sleutelbeheer, configuratie en uitbreidbaarheid.
  • Microsoft.AspNetCore.DataProtection.Extensions extensie. Biedt een fabrieksmethode voor het creëren van instanties en een opslagextensiemethode voor sleutels. Dit pakket wordt gebruikt in niet-DI-modus.
  • Microsoft.AspNetCore.DataProtection.SystemWeb <machineKey>implementeert compatibiliteit met de encryptie- en ontsleutelingsmechanismen in ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation biedt een implementatie van de PBKDF2 wachtwoord-hashingroutine. Gebruik het wanneer je hash-encryptie nodig hebt.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider is gebaseerd op het Provider-model van Microsoft en wordt gebruikt om beleidsregels te bieden voor het aanmaken van instanties. Maak een IDataProtector-object aan door de IDataProtectionProvider.CreateProtector(purpose)-methode aan te roepen.
IDataProtector is een dienst die verantwoordelijk is voor encryptie en encryptie, die voornamelijk twee soorten methoden biedt: beschermen en ontbeschermen (elk type kent veel overbelasting- en uitbreidingsmethoden). Eenvoudige opvatting is dat protect wordt gebruikt voor encryptie en unprotect voor decryptie.
De parameter de Create-methode van IDataProtectionProvider is een string die isolatiefunctionaliteit biedt. IDataProtectors die zijn gemaakt met niet-passable strings krijgen verschillende encryptieresultaten, zelfs als ze hetzelfde object versleutelen. IDataProtector zelf is ook een impliciete IDataProtectionProvider, die ook de CreateProtector(purpose)-methode biedt. Dit betekent dat het eenvoudig geïmplementeerd kan wordenMulti-tenant applicatiemodus



Hier zijn een paar dingen om in gedachten te houden:

IDataProtectionProvider- en IDataProtector-instantiesSchroefdraadveiligheidDoel.
De unprotect-methode is om de aanroeper te informeren dat de ontsleuteling is mislukt door een uitzondering te gooien. De uitzonderingsklasse is CryptographicException.

ASP.NET Core is eenvoudig te gebruiken gegevensbescherming

Er wordt een nieuwe interface toegevoegd om data te versleutelen en te ontsleutelen, en de code is als volgt:

De test is als volgt:



IDataProtectionProvider is een singleton-patroon met de volgende code:De hyperlink-login is zichtbaar.



Sleutelbeheer

Als het gebruikersprofiel beschikbaar is, wordt de sleutel behouden om%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmap. Als het besturingssysteem Windows is, wordt de sleutel in rust versleuteld met DPAPI. Zoals hieronder getoond:



Belangrijke leven

Standaard is de sleutelDe levenscyclus is 90 dagen。 Wanneer de sleutel verloopt, genereert de applicatie automatisch een nieuwe sleutel en stelt deze in als de actieve sleutel. Zolang de gedeactiveerde sleutels op het systeem blijven, kan je applicatie alle door hen beschermde gegevens ontsleutelen. Voor meer informatie, zie Key Management.De hyperlink-login is zichtbaar.

Standaardalgoritme

De standaard belastingbeschermingsalgoritmen zijn AES-256-CBC (voor vertrouwelijkheid) en HMACSHA256 (voor authenticiteit). De 512-bits hoofdsleutel, die elke 90 dagen verandert, wordt gebruikt om twee subsleutels voor deze algoritmen af te leiden op basis van elke payload.

ASP.NET sleutelopslagprovider in Core

Bestandssysteem: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, wat referentie: Azure.Extensions.AspNetCore.DataProtection.Blobs vereist
Redis opslag: PersistKeysToStackExchangeRedis, referentie vereist: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referentie:De hyperlink-login is zichtbaar.

Geclusterd en verspreid

Als de serversleutel inconsistent is, bijvoorbeeld: server A-encryptie en server B-decryptie, wordt een uitzondering gegooid (zoals weergegeven in de onderstaande figuur), en moet dezelfde sleutel worden ingezet.



Configureer dezelfde sleutel als volgt:

Zodra het programma draait, genereert het automatisch een key-*.xml key-bestand onder de map publish_itsvse, houd dit bestand consistent op verschillende servers! Zoals hieronder getoond:



ASP.NET Kernbeschermingsconfiguratie

ASP.NET CORE biedt uitgebreide API-ondersteuning, wachtwoordpersistentie, configuratie en aanpassingsmogelijkheden.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenario.
  • PersistKeysToFileSystem。 Lokaal bestandssysteemopslagschema dat encryptie-algoritmen, sleutels en afhankelijkheden registreert.
  • ProtectKeysWith*。 Versleuteling wordt mogelijk gemaakt via uitbreidingen van deze naamgevingsmethode. Bijvoorbeeld, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Stel standaard de levensduur van de sleutel in op 90 dagen.
  • SetApplicationName。 Stel de app-naam in. Standaard zijn gegevensbeschermingsmechanismen volledig geïsoleerd van elke applicatie. Sleuteldeling tussen apps kan worden bereikt door dezelfde appnaam in te stellen.
  • DisableAutomaticKeyGeneration。 Voorkom dat de sleutel automatisch wordt teruggerold. Vaak willen we eigenlijk niet dat wachtwoorden veranderen of in een clusterservice zitten, we hebben een speciale dienst die verantwoordelijk is voor het terugrollen van sleutelupdates, en andere payloads hoeven het gewoon van een gedeelde plek te halen.
  • UseCryptographicAlgorithms。 Gebruik aangepaste encryptie- en decryptie-algoritmen


Referentie:De hyperlink-login is zichtbaar.





Vorig:Gebruik PowerShell om het element &lt;machineKey&gt; te genereren
Volgend:Vergelijk Tailscale, ZeroTier, WireGuard, OmniEdge en Ngrok voor geo-netwerkoplossingen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com