|
|
Публикувано в 15.08.2023 г. 10:21:16 ч.
|
|
|
|

Изисквания: По време на процеса на разработка често може да се сблъскате с някои сценарии за криптиране и декриптиране, например удостоверяването на имейл може да носи криптиран низ, а когато потребителят кликне върху линка за преход към интерфейса, системата може нормално да декриптира съдържанието на низа, като по този начин реализира функцията за удостоверяване на имейла.
ASP.NET Core предлага функции за защита на данните:Входът към хиперлинк е видим.
Основен пакет
Основните пакети, участващи в защитата на данните, са следните, които се цитират при необходимост:
- Microsoft.AspNetCore.DataProtection.Abstractions стандарт. Именуване на пакети на компоненти на абстракция на NET CORE. Включва основни интерфейсни услуги като IDataProtectionProvider и IDataProtector.
- Microsoft.AspNetCore.DataProtection, включително основни криптографски операции, управление на ключове, конфигурация и разширяемост.
- Разширение Microsoft.AspNetCore.DataProtection.Extensions. Предоставя фабричен метод за създаване на инстанции и метод за разширение на съхранението на ключове. Този пакет се използва в не-DI режим.
- Microsoft.AspNetCore.DataProtection.SystemWeb реализира <machineKey>съвместимост с механизмите за криптиране и декриптиране в ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation предоставя реализация на рутината за хаширане на пароли PBKDF2. Използвайте го, когато трябва да използвате хеш криптиране.
IDataProtectionProvider срещу IDataProtector
IDataProtectionProvider е базиран на модела Provider на Microsoft и се използва за предоставяне на политики за създаване на инстанции. Създайте обект IDataProtector чрез извикване на метода IDataProtectionProvider.CreateProtector(purpose). IDataProtector е услуга, отговорна за криптиране и декриптиране, която основно предоставя два типа методи: защита и премахване на защита (всеки тип има много методи за претоварване и разширение). Простото разбиране е, че protect се използва за криптиране, а unprotect – за декриптиране. Параметърът на метода Create на IDataProtectionProvider е низ, който предоставя функционалност за изолация. IDataProtectors, създадени с непроходими низове, ще получат различни резултати от криптирането, дори ако криптират един и същ обект. Самият IDataProtector е и имплицитен IDataProtectionProvider, който предоставя и метода CreateProtector(цел). Това означава, че може лесно да се реализираМулти-наемателен режим на приложение。
Ето няколко неща, които да имате предвид:
IDataProtectionProvider и IDataProtector инстанцииБезопасност на резбатаЦел. Методът за премахване на защитата е да се информира обаждащият се, че декриптирането е неуспешно, като се хвърли изключение. Класът изключения е CryptographicException.
ASP.NET Core е лесен за използване защита на данни
Добавен е нов интерфейс за криптиране и декриптиране на данни, а кодът е следният:
Тестът е следният:
IDataProtectionProvider е сингълтон модел със следния код:Входът към хиперлинк е видим.
Управление на ключове
Ако потребителският профил е наличен, ключът се запазва до%LOCALAPPDATA%\ASP.NET\DataProtection-KeysПапка. Ако операционната система е Windows, ключът се криптира в покой чрез DPAPI. Както е показано по-долу:
Ключов живот
По подразбиране, ключътЖизненият цикъл е 90 дни。 Когато ключът изтече, приложението автоматично генерира нов ключ и го определя като активен ключ. Докато деактивираните ключове остават в системата, вашето приложение може да декриптира всякакви данни, защитени от тях. За повече информация вижте Управление на ключове.Входът към хиперлинк е видим.
Алгоритъм по подразбиране
Стандартните алгоритми за защита от натоварване са AES-256-CBC (за поверителност) и HMACSHA256 (за автентичност). 512-битовият главен ключ, който се променя на всеки 90 дни, се използва за извеждане на два подключа за тези алгоритми въз основа на всеки полезен товар.
ASP.NET доставчик на съхранение на ключове в Core
Файлова система: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, which requires reference: Azure.Extensions.AspNetCore.DataProtection.Blobs Redis storage: PersistKeysToStackExchangeRedis, изисква се референция: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Препратка:Входът към хиперлинк е видим.
Клъстерирани и разпределени
Ако сървърният ключ е несъвместим, например: криптиране на сървър A и декриптиране на сървър B, ще бъде хвърлено изключение (както е показано на фигурата по-долу) и трябва да се разположи същият ключ.
Конфигурирайте същия ключ по следния начин:
След като програмата започне, тя автоматично генерира файл с ключ-*.xml под папката publish_itsvse, дръж този файл постоянен на различни сървъри! Както е показано по-долу:
ASP.NET Конфигурация за защита на ядрото
ASP.NET CORE предоставя богата поддръжка на API, запазване на пароли, конфигурация и функции за персонализация.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Сценарий за облачно съхранение на Azure.
- PersistKeysToFileSystem。 Схема за съхранение на локална файлова система, която записва алгоритми за криптиране, ключове и зависимости.
- ProtectKeysWith*。 Криптирането се осигурява чрез разширения на този метод за именуване. Например, ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 По подразбиране настройте живота на ключа на 90 дни.
- SetApplicationName。 Задайте името на приложението. По подразбиране механизмите за защита на данните са абсолютно изолирани от всяко приложение. Споделянето на ключове между приложенията може да се постигне чрез задаване на едно и също име на приложението.
- DisableAutomaticKeyGeneration。 Предотвратете автоматичното връщане на ключа назад. Често не искаме паролите да се променят или да са в клъстерна услуга, имаме специализирана услуга, отговорна за връщане на ключови актуализации, а другите полезни товари просто трябва да ги получават от споделено място.
- UseCryptographicAlgorithms。 Използвайте персонализирани алгоритми за криптиране и декриптиране
Препратка:Входът към хиперлинк е видим.
|
Предишен:Използвайте PowerShell за генериране на елемента <machineKey>Следващ:Сравнете Tailscale, ZeroTier, WireGuard, OmniEdge и Ngrok за геомрежови решения
|