4. 保护数据

本文详细介绍了在ASP.NET中如何实现数据保护,包括使用Microsoft.AspNetCore.DataProtection库来加密和解密数据,以及如何配置数据保护的存储和密钥管理。此外,还讨论了用户机密的概念,用于安全地存储配置数据,如数据库连接字符串和访问令牌,避免在源代码仓库中泄露敏感信息。文章展示了如何使用用户机密存储和管理配置,以及如何通过dotnet CLI工具进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在加密、签名和散列数据之后,下面将抽象层移动到更高的位置。本节将讨论数据的保护——存储对安全性敏感的数据。当数据与Web应用程序一起使用时,所使用的客户端是不可信任的。这就是要使用数据保护API了。

另一种需要保护的数据是配置数据。配置数据——比如SQL连接字符串(包括用户名和密码)或AWS或微软Azure的访问令牌——不应该放在公共源代码存储库中。这些信息很容易被误用。实际上,机器人被用来在GitHub的公共存储库中爬行,寻找密钥并使用它们,例如,运转虚拟机来存放比特币。App Secrets提供了一种方法,可以将机密数据存储在用户的配置文件中。

这些技术、数据保护和用户机密都在本节中讨论。

1. 实现数据保护

在.NET Framework中,名称空间System.Security.DataProtection包含DpApiDataProtector类,而这个类包装了本机Windows Data Protection API(DPAPI)。这些类基于Windows,并不提供.NET Core需要的灵活性和功能,所以ASP.NET团队创建了Microsoft.AspNetCore.DataProtection名称空间中的类。

使用这个库的原因是为日后的检索存储可信的信息,但存储媒体(如使用第三方的托管环境)不能信任自己,所以信息需要加密存储在主机上。

示例应用程序是一个简单的控制台应用程序(.NET Core),允许使用数据保护功能读写信息。在这个示例中,可以看到ASP.NET数据保护的灵活性和功能。

数据保护的示例代码使用了以下依赖项和名称空间:

依赖项

Microsoft.AspNetCore.DataProrection

Microsoft.Extensions.DependencyInjection

名称空间

Microsoft.AspNetCore.DataProtection

Microsoft.Extensions.DependencyInjection

System

System.IO

System.Linq

使用-r和-w命令行参数,可以启动控制台应用程序,读写存储器。此外,需要使用命令行,设置一个文件名来读写。检查命令行参数后,通过调用SetupDataProtection辅助方法来初始化数据保护。这个方法返回一个MySafe类型的对象,嵌入IDataProtector。之后,根据命令行参数,调用Write或Read方法:

        private const string readOption = "-r";
        private const string writeOption = "-w";
        private static readonly string[] options = { readOption,writeOption};
        static void Main(string[] args)
        {
            if (args.Length != 2||args.Intersect(options).Count()!=1)
            {
                ShowUsage();
                return;
            }
            string filename = args[1];
            MySafe safe = SetupDataProtection();
            switch (args[0])
            {
                case writeOption:
                    Write(safe,filename);
                    break;
                case readOption:
                    Read(safe,filename);
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值