|
|
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ą.
"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 <machineKey> generuotiKitą:Palyginkite "Tailscale", "ZeroTier", "WireGuard", "OmniEdge" ir "Ngrok" geotinklų sprendimus
|