宝哥软件园

ASP.NET核心数据保护第一部分

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

上一篇论文记录了在红隼中如何使用HTTPS(SSL),这在我们目前的项目中实际使用。

数据安全往往是包括我自己在内的开发人员容易忽视的一部分。在过去的两年里,行业中因为安全问题发生了很多严重的事情,所以安全对我们的开发人员来说非常重要,我们应该对我们代码的安全负责。

在工作中,我们经常看到encode、base64、sha256、rsa、hash、encryption、md5等。有些人仍然对它们感到困惑,不知道何时使用它们。有人认为MD5是一种加密算法。

在ASP.NET核心中,提供了许多新的应用编程接口来保护数据,包括加密和解密机制。让我们来看看。

目录加密、编码和哈希的区别数据保护介绍了ASP.NET核心的数据保护概述

编码、加密和散列之间的区别

1.编码

编码是将信息从一种形式或格式转换成另一种形式或格式的过程,它们是可逆的。例如url、base64、jsunicode、utf-8等。

2.加密加密是可逆的。与编码类似,它也将数据从一种形式转换为另一种形式。它通过特定的加密密钥进行相应的解密过程。加密和解密算法有两种:对称加密算法和非对称加密算法。对称性:DES、AES、SM1、RC4等。不对称:RSA、ECC、SM2等。

3.Hash,又称‘hash’,是将任意长度的数据转换成固定长度的“指纹”,这是不可逆的。而且只要输入发生变化,输出的哈希值就会大不相同。它还有一个特点,就是同样的输入总是有同样的结果,正好适合保存密码。比如MD5、SHA256、SHA512、RipeMD、惠而浦等等。

数据保护简介

在阅读数据保护的官方文档时,微软的文档是这样写的,大致意思是他们应该根据几个需求为可信客户端和不可信客户端开发一套数据保护库。这些要求是:

1.真实性和完整性给出了一个身份验证cookie的例子,即服务器已经生成了一个包含xyz权限的令牌,然后它将在未来的某个时间过期。此时,有必要重新请求生成一个。如何确保请求的令牌没有被篡改?

2.机密性服务器需要一些包含特定操作环境的信息,例如路径、权限或句柄或其他特定于服务器的东西。这些信息不应该透露给不受信任的客户端,也就是说,它类似于一个私钥。

3.隔离则需要制作一个组件,这个组件是独立的,不能依赖于系统中的其他组件。作为承载令牌的一个组件,如果想使用这个组件,不需要参考反CSRF的机制。

进一步缩小需求范围,加密数据不需要在系统之外的其他系统中使用,处理速度要尽可能快,因为每个web请求都会使用加密组件一次或多次。

基于以上需求,微软提出可以使用密码学,因为这是密码学应用的典型场景。事实上,这是密码学和非对称加密算法的应用场景。但众所周知,非对称加密是由公钥和私钥保证的。即使公钥被泄露,整个通信仍然是安全的,这是它相对于对称加密的优势。然而,非对称加密也有缺点,即加密和解密时间长且速度慢。

但上面的要求是速度要尽可能快。我该怎么办?因此,微软工程师想出了一个主意,可以简化和优化非对称加密机制来满足这一要求。因为不需要跨系统、跨语言,不需要任何协议,这就带来了更多优化的可能。

在这里,我想,如果我基于以上几点设计开发这样一个系统,应该如何设计呢?如何满足要求?带着这个问题,让我们仔细看看微软是如何做到的。

以下是一些总结的设计原则:

1.配置应该尽可能简单。默认情况下,配置应该为零,开发人员可以直接运行它。

2.提供一个简单的API,应该好用,不容易用错。

3.开发人员不需要学习如何管理这些密钥(公钥和私钥),但是系统应该自动选择算法并管理密钥的生命周期。理想情况下,开发人员不应该访问这些密钥的原始文件。

4.密钥应该受到保护,不会被远程调用。系统应具有自动保护机制,并可自动应用。

如果我设计这样一个图书馆,我可能不会想那么多,而只会想前三点。

让我们看看目标受众:

1.应用程序开发人员和框架开发人员(无需学习任何知识)。

2.应用程序开发人员和系统管理员(不使用默认配置,只是设置一些路径等。).

3.为具有更高安全意识的开发人员提供可扩展的api,或者根据特定需求进行扩展(需要重写系统组件并有一些独特的需求)。

以上,我们可以看到微软在开发组件时对问题的分析。也许我们可以从中学到一些东西。

ASP.NET核心区的数据保护

Web应用程序经常需要存储一些敏感数据(如用户密码)。Windows为桌面程序提供DPAPI,但不适合Web系统。ASP.NET核心提供了一个易于使用的应用编程接口来保护数据。

在ASP.NET核心,数据保护主要针对服务器设计,用来替代ASP.NET 1 . x-4 . x,machineKey主要用来保证使用Form认证时Cookie数据的加密和解密,保证不会被修改。或者视图状态数据的加密和解密没有被篡改,会话状态标识符被验证。

让我们看看最简单的使用方法:

使用系统;使用微软。数据保护;使用微软。扩展。依赖注射;公共类程序{ public static void main(string[]args){//将数据保护添加到服务var service collection=new service collection();serviceCollection。adddata protection();var services=serviceCollection。BuildServiceProvider();//从DI创建MyClass的实例。var instance=activator实用程序。创建instanceclass(服务);实例。RunSample();}公共类my class { idatapprotector _ protector;//参数“provider”来自dipublic my class(idatapprotectionprovider){ _ protector=provider . create protector(' contoso . my class . v1 ');} public void RunSample() { Console。写('回车输入: ');字符串输入=控制台。ReadLine();//加密字符串受保护的有效负载=_ protector.protect(输入);控制台。write line($“Protect returned : { protected payload }”);//解密字符串未受保护的有效负载=_ protector.unprotect(受保护的有效负载);控制台。write line($“Unprotect returned : { Unprotected payload }”);}}}/* *输出:* *输入: Hello world!*保护返回: CfDJ8ICcgQwZZhlAlTZT.odfh 66i 1 pengcr5e 441 xq * Unprotect returned : Hello world!*/in create protector ('Contoso。my class . v1’),参数“contoso.myclass.v1”可以理解为一个公钥。因为ASP.NET核心的数据保护是非对称加密(见上面的介绍),系统里面应该还是有密钥的,所以这里的密钥,ASP.NET核心,是在系统里面为你维护的。

看完这个,有的同学可能会问,系统是怎么帮我维护钥匙的?我们不妨先做个测试。

魏冄,2001年,在这种情况下,我要说的是,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,我是一个很好的人,你是谁,菲兰达朱娜"你好世界!",朱建强?朱建强cfdj 8 iccgqwzzhlaltzt-我.odfh66 i1 pngmpcr 5和441xQ(诶诶诶诶诶诶哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟页:1。

-你好-你好,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,云娥cfdj 8 iccgqwzzhlaltzt-我.odfh 66 i1 pngmpcr 5和441xQ张伯伦医生,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不"连续"。麦葛斯,v1范仲淹呢。

阿叔.鲁仲宣(音译):

朱化凡?朱化凡"系统安全。密码学。加密异常"绿筠小姐。

吴亚玲很高兴见到你?贺盛瑞、贺盛瑞、贺盛瑞、贺盛瑞,云娥,贺盛瑞?贺盛瑞,拜占庭阿叔,阿叔阿叔阿叔阿叔。

阿巧

你好吗?

1 .{ 1 }范仲淹把云娥一号Microsoft Azure(微软Azure)97年,哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟" %HOME%ASP .net 数据保护密钥"哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟。

2 ._范仲淹把云娥一号他们来了97年,是孙悟空金卡姆阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔阿叔澄清了吴登盛吴登盛,1821年,是阿云窗子操作系统什么事DPAPI哎哎哎。

{ 1 }哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,哈罗,你好win10作业系统阿奈威win7作业系统何曰,是云娥" % LOCALAPPDATA % ASP .net 数据保护密钥"哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,哥哥哥哥哥哥窗子操作系统什么事DPAPI哎哎哎。

4 ."哎哎哎哎哎哎哎哎哎哎哎,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,谢赫谢赫谢赫谢赫谢赫谢赫,高丽高丽高丽高丽高丽高丽高丽高丽高丽。

你是说.

何曰可扩展标记语言文件张曼玉(音似"天鹅座");张曼玉(音似"天鹅座");张曼玉(音似"天鹅座");张曼玉(音似"天鹅座");张曼玉(音似"天鹅座"),云娥c : 用户九条应用数据本地ASP .网络数据保护关键点哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟:key-c37 E3 ed 9-fbb 5-47 BC-9和8c-128afaf1c6d9.xml,魏冄:

?可扩展标记语言版本='1.0 '编码='utf-8 '?密钥id=' c37 E3 ed 9-fbb 5-47 BC-9 e8c-128 afaf 1c 6d 9 '版本=' 1 '创建日期2016-08-15t 05333336366016.7925949 z/创建日期激活日期2016-08-15t 053333366016.7165905 z/激活日期到期日期2016-11-13t 053333636366016 . 7165905 z/到期日期取消初始化描述符Type='aspnetcore。数据保护。authenticationdenryptionpromizer。配置模型。Microsoft authenticateddecryptordescriptyrer .AspNetCore。数据保护,版本=1.0.0.0,区域性=中性,公共令牌=ADB 9793829 DDA 60 '描述符加密算法=' AES _ 256 _ CBC '/验证算法=' hmac sha 256 '/encryptedsecret decryptype=' Microsoft ' .aspnetcore。数据保护。XML加密。微软dpapixmldecryptor .AspNetCore。数据保护,版本=1.0.0.0,区域性=中性,公共令牌=ADB 9793829 DDA 60 ' xmlns=' http://架构。ASP。net/2015/03/数据保护' encryptedkey xmlns='!-此密钥使用Windows DPAPI加密-值aqancmnd 8 bfhoaw/cl sbasaars 6 gbzu 5c 024 s8vcndbackground gayyyy yyyy aaazzgaaacabbo 4j 0 cscezdschdasdvtx zfcmsg 90 sdhyfgqaaaaaaaaaaaaaaaaaaacar 9 fgzklyzkgym 5 uliufpapakvsp 35j 96 ittylabadexvark 0 qtxufart/kvr 2 zbollyj 44 bhvqdd 6 b9tn 0l 9和七诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶诶,贺盛文。日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日90噢,天啊,第40号命令个90哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,云娥与云娥同在。哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不。

阿叔阿叔阿叔阿叔,你是说.

乌斯

本文是对ASP.NET核心数据保护的一般介绍,并包含一个简单的使用方法。在实际使用中,它实际上被用在许多组件中,如会话中间件、身份中间件、授权中间件等。普通开发人员在编码时可能不会使用。但是,如果在做分布式系统部署的时候不了解这个机制,可能会遇到麻烦(详见Cricket Blog中的这篇文章),所以还是可以期待以下内容,深入了解并掌握。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+