Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 2915|Răspunde: 0

[Sursă] ASP.NET Core (22) se bazează pe protecția datelor IDataProtectionProvider

[Copiază linkul]
Postat pe 15.08.2023 10:21:16 | | | |
Cerințe: În timpul procesului de dezvoltare, puteți întâlni adesea unele scenarii de criptare și decriptare, de exemplu, autentificarea prin email poate transporta un șir criptat, iar când utilizatorul dă click pe link pentru a sări la interfață, sistemul poate decripta conținutul șirului în mod normal, realizând astfel funcția de autentificare a emailului.

Generarea elementelor folosind PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Criptează datele cu ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Rolul MachineKey și modul de utilizare al acesteia
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core oferă funcții de protecție a datelor:Autentificarea cu hyperlink este vizibilă.

Pachetul principal

Principalele pachete implicate în Protecția Datelor sunt următoarele, care sunt referențiate după necesitate:

  • Microsoft.AspNetCore.DataProtection.Abstractions standard. Denumirea componentelor stratului de abstracție NET Core. Include servicii majore de interfață precum IDataProtectionProvider și IDataProtector.
  • Microsoft.AspNetCore.DataProtection, incluzând operațiunile criptografice de bază, gestionarea cheilor, configurarea și extensibilitatea.
  • Extensia Microsoft.AspNetCore.DataProtection.Extensions. Oferă o metodă de fabrică pentru crearea instanțelor și o metodă de extensie a stocării pentru chei. Acest pachet este folosit în modul non-DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementează <machineKey>compatibilitatea cu mecanismele de criptare și decriptare din ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation oferă o implementare a rutinei de hashing a parolelor PBKDF2. Folosește-l când ai nevoie să folosești criptare hash.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider se bazează pe modelul Provider al Microsoft și este folosit pentru a oferi politici pentru crearea instanțelor. Creează un obiect IDataProtector apelând metoda IDataProtectionProvider.CreateProtector(purpose).
IDataProtector este un serviciu responsabil pentru criptare și decriptare, care oferă în principal două tipuri de metode: protect și unprotect (fiecare tip are multe metode de supraîncărcare și extensie). Înțelegerea simplă este că protect este folosit pentru criptare, iar unprotect este folosit pentru decriptare.
Parametrul Create method al IDataProtectionProvider este un șir care oferă funcționalitate de izolare. IDataProtectors create cu șiruri netrecibile vor obține rezultate diferite de criptare chiar dacă criptează același obiect. IDataProtector este și un IDataProtectionProvider implicit, care oferă și metoda CreateProtector(purpose). Aceasta înseamnă că poate fi implementat ușorModul aplicație multi-chiriaș



Iată câteva lucruri de reținut:

Instanțe IDataProtectionProvider și IDataProtectorSiguranța filetuluiScop.
Metoda unprotect este de a informa apelantul că decriptarea a eșuat prin aruncarea unei excepții. Clasa de excepție este CryptographicException.

ASP.NET Core este simplu de folosit pentru protecția datelor

Se adaugă o nouă interfață pentru criptarea și decriptarea datelor, iar codul este următorul:

Testul este următorul:



IDataProtectionProvider este un model singleton cu următorul cod:Autentificarea cu hyperlink este vizibilă.



Managementul cheilor

Dacă profilul utilizatorului este disponibil, cheia este păstrată pentru%LOCALAPPDATA%\ASP.NET\DataProtection-Keysdosar. Dacă sistemul de operare este Windows, cheia este criptată în repaus folosind DPAPI. Așa cum se arată mai jos:



Viață cheie

În mod implicit, cheiaCiclul de viață este de 90 de zile。 Când cheia expiră, aplicația generează automat o cheie nouă și setează cheia nouă ca cheie activă. Atâta timp cât cheile dezactivate rămân în sistem, aplicația ta poate decripta orice date protejate de ele. Pentru mai multe informații, vezi Managementul cheilor.Autentificarea cu hyperlink este vizibilă.

Algoritmul implicit

Algoritmii impliciti de protecție a încărcării utilizați sunt AES-256-CBC (pentru confidențialitate) și HMACSHA256 (pentru autenticitate). Cheia principală de 512 biți, care se schimbă la fiecare 90 de zile, este folosită pentru a deriva două subchei pentru acești algoritmi pe baza fiecărei sarcini utile.

ASP.NET furnizor cheie de stocare în Core

Sistem de fișiere: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, care necesită reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Stocare Redis: PersistKeysToStackExchangeRedis, referință necesară: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referință:Autentificarea cu hyperlink este vizibilă.

Clusterizate și distribuite

Dacă cheia serverului este inconsistentă, de exemplu: criptarea serverului A și decriptarea serverului B, va fi aruncată o excepție (așa cum se arată în figura de mai jos), iar aceeași cheie trebuie implementată.



Configurați aceeași cheie după cum urmează:

Odată ce programul rulează, generează automat un fișier key-*.xml sub folderul publish_itsvse, păstrează acest fișier consistent pe servere diferite! Așa cum se arată mai jos:



ASP.NET Configurația protecției nucleului

ASP.NET CORE oferă suport bogat pentru API-uri, persistență a parolelor, configurare și funcții de personalizare.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Scenariu de stocare în cloud Azure.
  • PersistKeysToFileSystem。 Schemă locală de stocare a sistemului de fișiere care înregistrează algoritmi, chei și dependențe de criptare.
  • ProtectKeysWith*。 Criptarea este asigurată prin extensii ale acestei metode de denumire. De exemplu, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Setează durata de viață a cheii la 90 de zile implicit.
  • SetApplicationName。 Setează numele aplicației. În mod implicit, mecanismele de protecție a datelor sunt absolut izolate de fiecare aplicație. Partajarea cheilor între aplicații poate fi realizată prin setarea aceluiași nume de aplicație.
  • DisableAutomaticKeyGeneration。 Împiedică ca cheia să fie reluată automat. De multe ori nu vrem ca parolele să se schimbe sau, într-un serviciu de cluster, avem un serviciu dedicat responsabil pentru anularea actualizărilor cheilor, iar alte sarcini utile trebuie doar să le obțină dintr-un loc partajat.
  • UseCryptographicAlgorithms。 Folosiți algoritmi personalizati de criptare și decriptare


Referință:Autentificarea cu hyperlink este vizibilă.





Precedent:Folosește PowerShell pentru a genera elementul &lt;machineKey&gt;
Următor:Comparați Tailscale, ZeroTier, WireGuard, OmniEdge și Ngrok pentru soluții de geo-rețea
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com