ASP.NET Core 数据保护 API 用于加密解密敏感数据,防止篡改身份验证票据等信息。通过 services.AddDataProtection() 启用服务,使用 IDataProtector 的 Protect 和 Unprotect 方法加解密,需指定目的字符串(如 “MyPurpose”)以隔离用途。可链式设置多级目的增强安全性。生产环境应持久化密钥至共享存储,如 Azure Blob 或 Redis,并配置强加密算法(如 AES-256-CBC + HMACSHA256),系统默认每90天轮换密钥,旧钥保留14天,可自定义密钥生命周期,确保多实例间兼容与安全。

ASP.NET Core 的数据保护 API(Data Protection API)主要用于安全地加密和解密数据,比如防止用户篡改身份验证票据、防伪令牌(anti-forgery tokens)、临时凭证等。它不是通用的加密库,而是为常见 Web 场景设计的安全机制。
启用数据保护服务
在 ASP.NET Core 应用中,数据保护系统通常由框架自动配置。你只需要在 Program.cs 中确保已添加相关服务:
services.AddDataProtection();
这会注册数据保护服务,并设置默认的加密机制和密钥存储位置(如开发环境使用临时文件夹)。
基本用法:加密与解密
通过依赖注入获取 IDataProtector 接口实例,然后调用 Protect 和 Unprotect 方法。
示例:
var protector = services.GetDataProtector(“MyPurpose”);
var protectedData = protector.Protect(“Hello World”); // 加密
var originalData = protector.Unprotect(protectedData); // 解密
“MyPurpose” 是目的字符串(purpose string),用于隔离不同用途的数据。相同目的才能解密,增强安全性。
设置保护作用域(Purposes)
你可以链式添加多个目的来细化保护策略:
var specificProtector = protector.CreateProtector(“FeatureA”, “Step1”);
var encrypted = specificProtector.Protect(“sensitive info”);
只有使用完全相同的“目的链”才能成功解密,避免跨功能误用或攻击。
持久化密钥与多服务器部署
默认情况下,密钥保存在本地磁盘(如 %LOCALAPPDATA% 或 %TEMP%)。生产环境多实例部署时,需共享密钥存储。
常见方案:
将密钥保存到 Azure Blob 存储:
.PersistKeysToAzureBlobStorage(new Uri(“…”)) 使用 Redis:
.PersistKeysToStackExchangeRedis(redis, “DataProtection-Keys”) 保存到数据库或共享文件路径(不推荐长期使用)
配置加密算法
可指定使用 AES 等算法进行加密:
services.AddDataProtection()
.UseCryptographicAlgorithms(new AuthenticatedEncryptionSettings
{
EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC,
ValidationAlgorithm = ValidationAlgorithm.HMACSHA256
});
注意:应使用强算法组合,并定期轮换密钥。
自动密钥轮换
数据保护系统默认每 90 天生成新密钥,旧密钥保留一段时间(默认14天)以支持解密历史数据。可通过配置调整:
services.AddDataProtection()
.SetDefaultKeyLifetime(TimeSpan.FromDays(30));
基本上就这些。合理使用数据保护 API 能有效防止敏感信息被篡改,关键是正确设置目的字符串、持久化密钥并保障生产环境下的密钥安全。
以上就是ASP.NET Core 中的数据保护 API 如何用法?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440299.html
微信扫一扫
支付宝扫一扫