|
|
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.
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 <machineKey> öğesini oluşturabilirsinizÖnümüzdeki:Jeo-ağ çözümleri için Tailscale, ZeroTier, WireGuard, OmniEdge ve Ngrok ile karşılaştırın
|