Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 2915|Atsakyti: 0

[Šaltinis] "ASP.NET Core" (22) yra pagrįsta "IDataProtectionProvider" duomenų apsauga

[Kopijuoti nuorodą]
Paskelbta 2023-08-15 10:21:16 | | | |
Reikalavimai: Kūrimo proceso metu dažnai galite susidurti su kai kuriais šifravimo ir iššifravimo scenarijais, pavyzdžiui, el. pašto autentifikavimas gali turėti užšifruotą eilutę, o vartotojui spustelėjus nuorodą, kad pereitų į sąsają, sistema gali normaliai iššifruoti eilutės turinį ir taip realizuoti el. pašto autentifikavimo funkciją.

Elementų generavimas naudojant "PowerShell"<machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Užšifruokite duomenis naudodami ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET "machineKey" vaidmuo ir kaip juo naudotis
https://www.itsvse.com/thread-2705-1-1.html

"ASP.NET Core" siūlo duomenų apsaugos funkcijas:Hipersaito prisijungimas matomas.

Pagrindinis paketas

Pagrindiniai duomenų apsaugos paketai yra šie, kurie pagal poreikį nurodomi:

  • Microsoft.AspNetCore.DataProtection.Abstractions standartas. NET CORE abstrakcijos sluoksnio komponentų paketų pavadinimai. Tai apima pagrindines sąsajos paslaugas, tokias kaip IDataProtectionProvider ir IDataProtector.
  • Microsoft.AspNetCore.DataProtection, įskaitant pagrindines kriptografines operacijas, raktų valdymą, konfigūravimą ir išplėtimą.
  • Microsoft.AspNetCore.DataProtection.Extensions plėtinys. Pateikia gamyklinį egzempliorių kūrimo metodą ir raktų saugojimo išplėtimo metodą. Šis paketas naudojamas ne DI režimu.
  • Microsoft.AspNetCore.DataProtection.SystemWeb įgyvendina <machineKey>suderinamumą su šifravimo ir iššifravimo mechanizmais ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation suteikia PBKDF2 slaptažodžio maišos rutinos įgyvendinimą. Naudokite jį, kai reikia naudoti maišos šifravimą.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider yra pagrįstas "Microsoft" teikėjo modeliu ir naudojamas egzempliorių kūrimo strategijoms pateikti. Sukurkite IDataProtector objektą iškviesdami IDataProtectionProvider.CreateProtector(purpose) metodą.
"IDataProtector" yra paslauga, atsakinga už šifravimą ir iššifravimą, kuri daugiausia teikia dviejų tipų metodus: apsaugoti ir neapsaugoti (kiekvienas tipas turi daug perkrovos ir išplėtimo būdų). Paprastas supratimas yra tas, kad apsauga naudojama šifravimui, o "unprotection" - iššifravimui.
IDataProtectionProvider's Create metodo parametras yra eilutė, teikianti izoliavimo funkciją. IDataProtectors, sukurti naudojant nepraeinamas eilutes, gaus skirtingus šifravimo rezultatus, net jei jie užšifruoja tą patį objektą. Pats IDataProtector taip pat yra numanomas IDataProtectionProvider, kuris taip pat teikia CreateProtector(purpose) metodą. Tai reiškia, kad jį galima lengvai įgyvendintiKelių nuomininkų programos režimas



Štai keletas dalykų, kuriuos reikia atsiminti:

IDataProtectionProvider ir IDataProtector egzemplioriaiSiūlų saugaTikslinės.
Neapsaugos būdas yra informuoti skambinantįjį, kad iššifravimas nepavyko, pateikiant išimtį. Išimčių klasė yra CryptographicException.

"ASP.NET Core" paprasta naudoti duomenų apsaugą

Pridedama nauja sąsaja duomenims šifruoti ir iššifruoti, o kodas yra toks:

Bandymas yra toks:



IDataProtectionProvider yra vieno tono modelis su tokiu kodu:Hipersaito prisijungimas matomas.



Raktų valdymas

Jei vartotojo profilis pasiekiamas, raktas išsaugomas%LOCALAPPDATA%\ASP.NET\DataProtection-Keysaplankas. Jei operacinė sistema yra "Windows", raktas užšifruojamas ramybės būsenoje naudojant DPAPI. Kaip parodyta žemiau:



Rakto gyvenimas

Pagal numatytuosius nustatymus raktasGyvenimo ciklas yra 90 dienų。 Pasibaigus rakto galiojimo laikui, programa automatiškai sugeneruoja naują raktą ir nustato naują raktą kaip aktyvųjį. Kol išjungti raktai lieka sistemoje, jūsų programa gali iššifruoti visus jų apsaugotus duomenis. Daugiau informacijos rasite Raktų valdymas.Hipersaito prisijungimas matomas.

Numatytasis algoritmas

Numatytieji apkrovos apsaugos algoritmai yra AES-256-CBC (konfidencialumui) ir HMACSHA256 (autentiškumui). 512 bitų pagrindinis raktas, kuris keičiasi kas 90 dienų, naudojamas dviem šių algoritmų daliniams raktams išvesti pagal kiekvieną naudingąją apkrovą.

ASP.NET raktų saugyklos teikėjas "Core"

Failų sistema: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, which require reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis saugykla: PersistKeysToStackExchangeRedis, reikalinga nuoroda: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Nuoroda:Hipersaito prisijungimas matomas.

Sugrupuoti ir paskirstyti

Jei serverio raktas yra nenuoseklus, pavyzdžiui: serverio A šifravimas ir serverio B iššifravimas, bus pateikta išimtis (kaip parodyta paveikslėlyje žemiau) ir reikia įdiegti tą patį raktą.



Sukonfigūruokite tą patį raktą taip:

Kai programa veikia, ji automatiškai sugeneruoja rakto * .xml rakto failą publish_itsvse aplanke, išlaikykite šį failą nuoseklų skirtinguose serveriuose! Kaip parodyta žemiau:



ASP.NET Pagrindinė apsaugos konfigūracija

ASP.NET CORE teikia platų API palaikymą, slaptažodžio išlaikymo, konfigūravimo ir tinkinimo funkcijas.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure debesies saugyklos scenarijus.
  • PersistKeysToFileSystem。 Vietinės failų sistemos saugojimo schema, kurioje įrašomi šifravimo algoritmai, raktai ir priklausomybės.
  • Apsaugoti raktus su*。 Šifravimas užtikrinamas naudojant šio pavadinimo metodo plėtinius. Pavyzdžiui, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Pagal numatytuosius nustatymus nustatykite rakto galiojimo laiką į 90 dienų.
  • SetApplicationName。 Nustatykite programos pavadinimą. Pagal numatytuosius nustatymus duomenų apsaugos mechanizmai yra visiškai izoliuoti nuo kiekvienos programos. Raktų bendrinimą tarp programų galima pasiekti nustatant tą patį programos pavadinimą.
  • DisableAutomaticKeyGeneration。 Neleiskite raktui automatiškai atsukti atgal. Daug kartų mes tikrai nenorime, kad slaptažodžiai keistųsi arba klasterio paslaugoje, turime specialią paslaugą, atsakingą už raktų atnaujinimo atšaukimą, o kitoms naudingoms apkrovoms tereikia jį gauti iš bendros vietos.
  • UseCryptographicAlgorithms。 Naudokite pasirinktinius šifravimo ir iššifravimo algoritmus


Nuoroda:Hipersaito prisijungimas matomas.





Ankstesnis:"PowerShell" naudojimas elementui &lt;machineKey&gt; generuoti
Kitą:Palyginkite "Tailscale", "ZeroTier", "WireGuard", "OmniEdge" ir "Ngrok" geotinklų sprendimus
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com