Positive Technologies의 최근 조사에 따르면 데이터 유출 취약성과 보안 문제는 웹 앱의 44%에 영향을 미칩니다. 민감한 데이터는 모든 웹 앱에 존재하며 데이터 도난은 해당 데이터가 부적절하게 보호될 때 발생합니다. 따라서 적절한 데이터 보호를 위해 ASP.NET Core 암호화 알고리즘 외에 암호화 API를 사용하여 데이터를 보호하고 데이터 손실을 방지합니다. 공유 환경의 모든 사람이 액세스할 수 없어야 하는 데이터는 ASP.NET Data Protection Provider를 사용하여 보호할 수 있습니다.
이 블로그에서는 ASP.NET 데이터 보호 공급자의 작동 방식과 NCache 키 저장소 공급자로.
ASP.NET Core 데이터 보호 공급자
데이터 보호는 ASP의 기능입니다..NET Core 다양한 암호화 방법을 사용하여 데이터를 보호할 수 있습니다. AES-256-CBC 및 HMACSHA256은 각각 기밀성과 신뢰성에 사용되는 표준 페이로드 보호 알고리즘입니다. 이러한 방법에 필수적인 두 개의 하위 키는 페이로드당 512일마다 수정되는 90비트 마스터 키에서 파생됩니다.
1 2 3 |
services.AddDataProtection() // use a 14-day lifetime instead of a 90-day lifetime .SetDefaultKeyLifetime(TimeSpan.FromDays(14)); |
생성된 키는 키 저장소 공급자를 사용하여 저장/지속됩니다.
키 저장소 공급자
데이터 보호 시스템은 기본 검색 메커니즘을 사용하여 암호화 키를 유지해야 하는 위치를 결정합니다. 개발자는 기본 검색 메커니즘을 재정의하고 위치를 수동으로 지정할 수 있습니다.
1. 기본 키 저장소 공급자
기본적으로 키는 ASP의 창에서 지정된 임시 폴더에 유지됩니다..NET Core하지만 키를 기본 위치에 저장하면 여러 웹 애플리케이션 인스턴스에서 키에 액세스할 수 없다는 단점이 있습니다. 따라서 여러 서버에서 키를 사용할 수 있고 모든 웹 애플리케이션 인스턴스에서 액세스할 수 있도록 하려면 사용자가 수동으로 키 지속성을 위한 위치를 지정해야 합니다.
2. NCache 키 저장소 공급자로
여러 서버에서 키를 사용할 수 있도록 하려면 ASP.NET Core 키 저장소 공급자를 구성할 수 있습니다. 여기서 우리는 사용할 수 있습니다 NCache 키 저장소 공급자로서 키는 캐시에 유지되며 이후 NCache 클러스터 전체의 공유 캐시이므로 모든 웹 애플리케이션 인스턴스에서 키를 사용할 수 있습니다. 방법을 사용하여, PersistKeysToNCache
.
- 지속키NCache
PersistKeysToNCache
사용자가 구성하는 동안 키가 지속되는 캐시 이름과 캐시 태그를 지정할 수 있는 진입점입니다. NCache 키 저장소 공급자로.
구성 NCache 키 저장소 공급자로
NCache 로 작동 키 저장소 공급자 데이터 보호 서비스의 키를 저장하고 구성이 간단하고 쉽습니다. 구성하려면 NCache ASP.NET Core 데이터 보호 공급자는 아래 단계를 따르십시오.
1 단계 : 데이터 보호 서비스 구성
ASP.NET Core 데이터 보호를 위한 미들웨어를 제공합니다. 이 미들웨어는 다음을 사용하여 서비스 컬렉션에 추가해야 합니다. AddDataProtection()
방법. 제공하다 DirectoryInfo
키를 저장해야 하는 저장소를 가리킵니다.
- 열기 시작.cs 프로젝트의 파일.
- .
ConfigureServices()
메소드에 다음 서비스를 추가하십시오.
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); } |
2단계: NuGet 패키지 설치
첫 번째 단계는 ASP 공유를 허용하는 NuGet 패키지를 설치하는 것입니다..NET Core 데이터 보호 키 입력 NCache. NuGet 패키지를 설치하려면 먼저 다음을 엽니다. 비주얼 스튜디오 가서 도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔 그런 다음 NuGet 패키지를 검색합니다. AspNetCore.DataProtection.NCache
.
3 단계 : 구성 NCache 데이터 보호 서비스를 위한 키 저장소 공급자로
NuGet 패키지를 설치한 후 먼저 구성해야 합니다. NCache 데이터 보호 서비스용 키를 저장하는 키 저장소 공급자로 사용됩니다.
1 2 3 4 5 6 |
public void ConfigureServices(IServiceCollection services) { string cacheName = "demoCache"; string cacheTag = "encryptions_keys_tag"; services.AddDataProtection().PersistKeysToNCache(cacheName, cacheTag); } |
추가 사용 NCache ASP의 키 저장소 공급자로.NET Core 데이터 보호 공급자는 아래의 샘플 애플리케이션을 구현합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.DataProtection; using Alachisoft.NCache.AspNetCore.DataProtection; namespace DataProtectionSample { public class Program { static void Main(string[] args) { string cacheName = "demoLocalCache"; string cacheTag = "MyEncryptionKeys"; var serviceCollection = new ServiceCollection(); serviceCollection.AddDataProtection() .PersistKeysToNCache(cacheName,cacheTag); var services = serviceCollection.BuildServiceProvider(); // create an instance of MyClass using the service provider var instance = ActivatorUtilities.CreateInstance(services); instance.RunSample(); } } Public class MyClass { IDataProtector _protector; // the 'provider' parameter is provided by DI public MyClass(IDataProtectionProvider provider) { _protector = provider.CreateProtector("Contoso.MyClass.v1"); } public void RunSample() { Console.Write("Enter input: "); string input = Console.ReadLine(); // protect the payload string protectedPayload = _protector.Protect(input); Console.WriteLine($"Protect returned: {protectedPayload}"); // unprotect the payload string unprotectedPayload = _protector.Unprotect(protectedPayload); Console.WriteLine($"Unprotect returned: {unprotectedPayload}"); } } } |
결론
ASP.NET Core 똑같이 중요한 암호화 알고리즘 외에도 암호화 API를 사용하여 추가된 데이터의 보안을 보장합니다. 본질적으로 NCache 키를 저장하는 키 저장소 공급자 역할을 한 다음 여러 웹 응용 프로그램 인스턴스에서 키에 액세스할 수 있도록 합니다. 따라서 지금 완전히 작동하는 60일 평가판을 다운로드하여 직접 사용해 보십시오.
훌륭한 정보입니다. 공유해주셔서 감사합니다