Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 2915|Yanıt: 0

[Kaynak] ASP.NET Core (22), IDataProtectionProvider veri korumasına dayanmaktadır

[Bağlantıyı kopyala]
Yayınlandı 15.08.2023 10:21:16 | | | |
Gereksinimler: Geliştirme sürecinde, örneğin e-posta doğrulaması şifreli bir dizi taşıyabilir ve kullanıcı bağlantıya tıklayarak arayüze geçtiğinde, sistem dizinin içeriğini normal şekilde çözebilir ve böylece e-posta kimlik doğrulama fonksiyonunu gerçekleştirebilir.

PowerShell <machineKey>kullanarak elemanlar oluşturun
https://www.itsvse.com/thread-10644-1-1.html

Veriyi ASP.NET machineKey ile şifreleyin
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET MachineKey'in rolü ve nasıl kullanılacağı
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core, veri koruma özellikleri sunar:Bağlantı girişi görünür.

Ana Paket

Veri Koruma'da yer alan ana paketler şunlardır ve ihtiyaç duyulduğunda referans verilmektedir:

  • Microsoft.AspNetCore.DataProtection.Abstractions standard. NET CORE soyutlama katmanı bileşen paket adlandırma. IDataProtectionProvider ve IDataProtector gibi önemli arayüz hizmetlerini içerir.
  • Microsoft.AspNetCore.DataProtection, temel kriptografik işlemler, anahtar yönetimi, yapılandırma ve genişletilebilirlik dahil olmak üzere.
  • Microsoft.AspNetCore.DataProtection.Extensions extension. Örnekler oluşturmak için fabrika yöntemi ve anahtarlar için depolama genişletme yöntemi sağlar. Bu paket, DI dışı modda kullanılır.
  • Microsoft.AspNetCore.DataProtection.SystemWeb, <machineKey>ASP.NET 4.x'teki şifreleme ve şifre çözme mekanizmalarıyla uyumluluğu uygular.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation, PBKDF2 şifre hashing rutininin bir uygulamasını sağlar. Hash şifreleme kullanmanız gerektiğinde kullanın.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider, Microsoft'un Provider modeline dayanır ve örnekler oluşturmak için politikalar sağlamak amacıyla kullanılır. IDataProtectionProvider.CreateProtector(purpose) metodunu çağırarak bir IDataProtector nesnesi oluşturun.
IDataProtector, şifreleme ve şifre çözme için sorumlu bir hizmettir ve esas olarak iki tür yöntem sunar: koruma ve koruma dışı (her türün birçok aşırı yükleme ve genişletme yöntemi vardır). Basit bir anlayış, protect şifreleme için, unprotect ise şifre çözme için kullanılır.
IDataProtectionProvider'ın Create method parametresi, izolasyon işlevselliği sağlayan bir dizidir. Geçilemeyen dizilerle oluşturulan IDataProtectorlar, aynı nesneyi şifreleseler bile farklı şifreleme sonuçları alır. IDataProtector kendisi de örtük bir IDataProtectionProvider'dır ve aynı zamanda CreateProtector(amaç) yöntemini de sağlar. Bu da kolayca uygulanabileceği anlamına gelirÇok kiracı uygulama modu



İşte aklınızda tutulması gereken birkaç şey:

IDataProtectionProvider ve IDataProtector örnekleriİdi güvenliğiHedef.
Korunmasız yöntem, arayan kişiye şifre çözmenin başarısız olduğunu bir istisna atarak bildirmektir. İstisna sınıfı CryptographicException'tır.

ASP.NET Core kullanımı kolay veri korumasıdır

Veri şifreleme ve şifre çözme için yeni bir arayüz eklenir ve kod şu şekildedir:

Test şöyledir:



IDataProtectionProvider, aşağıdaki kodu içeren tek bir desendir:Bağlantı girişi görünür.



Anahtar yönetimi

Kullanıcı profili mevcutsa, anahtar şu şekilde korunur:%LOCALAPPDATA%\ASP.NET\DataProtection-Keysklasör. Eğer işletim sistemi Windows ise, anahtar DPAPI ile dinlenme halinde şifrelenir. Aşağıda gösterildiği gibi:



Anahtar yaşam

Varsayılan olarak, anahtarYaşam döngüsü 90 gündür。 Anahtarın süresi dolduğunda, uygulama otomatik olarak yeni bir anahtar oluşturur ve yeni anahtarı aktif anahtar olarak belirler. Deaktive edilmiş anahtarlar sistemde kaldığı sürece, uygulamanız bu anahtarlar tarafından korunan herhangi bir veriyi çözebilir. Daha fazla bilgi için Anahtar yönetimine bakınız.Bağlantı girişi görünür.

Varsayılan algoritma

Varsayılan yük koruma algoritmaları AES-256-CBC (gizlilik için) ve HMACSHA256 (özgünlük için) olarak kullanılır. Her 90 günde bir değişen 512-bitlik ana anahtar, her yüke göre bu algoritmalar için iki alt anahtar türetilir.

ASP.NET Core'da anahtar depolama sağlayıcısı

Dosya Sistemi: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, bu referans gerektirir: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis storage: PersistKeysToStackExchangeRedis, referans gerekli: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referans:Bağlantı girişi görünür.

Kümelenmiş ve dağıtılmış

Sunucu anahtarı tutarsızsa, örneğin: sunucu A şifreleme ve sunucu B şifre çözme, bir istisna atılır (aşağıdaki şekilde gösterildiği gibi) ve aynı anahtarın açılması gerekir.



Aynı tuşu aşağıdaki gibi yapılandırın:

Program çalıştığında, publish_itsvse klasörü altında otomatik olarak bir anahtar-*.xml anahtar dosyası oluşturur, bu dosyayı farklı sunucular altında tutarlı tutun! Aşağıda gösterildiği gibi:



ASP.NET Çekirdek koruma yapılandırması

ASP.NET CORE, zengin API desteği, şifre kalıcılığı, yapılandırma ve özelleştirme fonksiyonları sağlar.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenario.
  • PersistKeysToFileSystem。 Şifreleme algoritmalarını, anahtarları ve bağımlılıkları kaydeden yerel dosya sistemi depolama şeması.
  • ProtectKeysWith*。 Şifreleme, bu adlandırma yönteminin uzantılarıyla sağlanır. Örneğin, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Anahtar ömrünü varsayılan olarak 90 güne ayarlayın.
  • SetApplicationName。 Uygulama adını ayarlayın. Varsayılan olarak, veri koruma mekanizmaları her uygulamadan tamamen izole edilmiştir. Uygulamalar arasında anahtar paylaşımı, aynı uygulama adını belirleyerek sağlanabilir.
  • DisableAutomaticKeyGeneration。 Anahtarın otomatik olarak geri alınmasını önleyin. Çoğu zaman şifrelerin veya küme hizmetlerinin değişmesini istemiyoruz, anahtar güncelleme geri almaktan sorumlu özel bir hizmetimiz var ve diğer yükler sadece paylaşılan bir yerden alması gerekiyor.
  • UseCryptographicAlgorithms。 Özel şifreleme ve şifre çözme algoritmaları kullanın


Referans:Bağlantı girişi görünür.





Önceki:PowerShell kullanarak &lt;machineKey&gt; öğesini oluşturabilirsiniz
Önümüzdeki:Jeo-ağ çözümleri için Tailscale, ZeroTier, WireGuard, OmniEdge ve Ngrok ile karşılaştırın
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com