在Asp.NET Core中如何管理用户机密数据

背景

回顾

在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法。在早期VB/VB.NET时代,经常使用.ini文件来进行配置管理;而在.NET FX开发中,我们则倾向于使用web.config文件,通过配置appsetting的配置节来处理;而在.NET Core开发中,我们有了新的基于json格式的appsetting.json文件。

无论采用哪种方式,其实配置管理从来都是一件看起来简单,但影响非常深远的基础性工作。尤其是配置的安全性,贯穿应用程序的始终,如果没能做好安全性问题,极有可能会给系统带来不可控的风向。

源代码比配置文件安全么?

有人以为把配置存放在源代码中,可能比存放在明文的配置文件中似乎更安全,其实是“皇帝的新装”。

在前不久,笔者的一位朋友就跟我说了一段故事:他说一位同事在离职后,直接将曾经写过的一段代码上传到github的公共仓库,而这段代码中包含了某些涉及到原企业的机密数据,还好被github的安全机制提前发现而及时终止了该行为,否则后果不堪设想。

于是,笔者顺手查了一下由于有意或无意泄露企业机密,造成企业损失的案例,发现还真不少。例如大疆前员工通过 Github 泄露公司源代码,被罚 20 万、获刑半年 这起案件,也是一个典型的案例。

该员工离职后,将包含关键配置信息的源代码上传到github的公共仓库,被黑客利用,使得大量用户私人数据被黑客获取,该前员工最终被刑拘。

大部分IT公司都会在入职前进行背景调查,而一旦有案底,可能就已经与许多IT公司无缘;即便是成为创业者,也可能面临无法跟很多正规企业合作的问题。

小结

所以,安全性问题不容小觑,哪怕时间再忙,也不要急匆匆的就将数据库连接字符串或其他包含敏感信息的内容轻易的记录在源代码或配置文件中。在这个点上,一旦出现问题,往往都是非常严重的问题。

如何实现

机密管理器概述

根据微软官方文档 的描述:

机密管理器工具在开发 ASP.NET Core 项目的过程中存储敏感数据。 在此上下文中,一段敏感数据是应用程序机密。 应用密钥存储在与项目树不同的位置。 应用程序机密与特定项目关联或在多个项目之间共享。

在VS2019项目中,选中项目,右键,点击:管理用户机密(G)菜单,打开用户机密存储文件 secrets.json 

secrets.json 文件和普通的Json文件没有区别,他不会主动对存储的数据进行加密,他的存储位置和项目位置不一致,因此这个文件不会随项目文件通过 Git Svn 等代码管理工具上传至服务器。

在windows平台下,机密数据的存放位置为(我项目中的机密文件存储位置):

未完待续:

猜你喜欢

转载自www.cnblogs.com/chenwolong/p/13188512.html