博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
保护 .NET Core 项目的敏感信息
阅读量:5889 次
发布时间:2019-06-19

本文共 1259 字,大约阅读时间需要 4 分钟。

我们的项目中几乎都会有配置文件,里面可能会存储一些敏感信息,比如数据库连接字符串、第三方 API 的 AppKey 和 SecretKey 等。

对于开源项目,这些敏感信息肯定不能随着源代码一起提交到托管平台。

对于网站应用大多都是要部署到有公开 IP 的服务器上的,存有敏感信息的文件放在 Web 目录下也不安全。

较好的办法是把敏感信息文件存在项目以外的地方。

在.NET Core 中,我们可以使用 Secret Manager 工具来管理敏感信息,这个工具可以将敏感信息保存在一个 secrets.json 文件中,它不在项目文件夹下,而是存放在另外的地方。对于三种操作系统,它的位置是:

Windows: %APPDATA%/Microsoft/UserSecrets/
/secrets.json Linux : ~/.microsoft/usersecrets/
/secrets.json Mac : ~/.microsoft/usersecrets/
/secrets.json

一个.NET Core 应用对应一个唯一的 UserSecretsId,一般是一个 GUID。

这也限制了每个开发者都必须有自己的 UserSecrets 文件夹。虽然有些麻烦,但这也有个好处。就是每个开发者可以使用不同于其它开发者的敏感数据进行开发。比如有些公司的数据库为每个开发者创建了独立的数据库访问账号。

在 VS 中可以很方便地操作 secrets.json。右击项目,选择[Manage User Secrets],如图:

编辑打开的 secrets.json 文件,把敏感信息填入其中,如:

{
"ConnectionString": "server=localhost;database=testdb;uid=root;pwd=123456;" }

保存后,.csproj 文件中会自动生成一个 UserSecretsId:

如果不用 VS,也可以在此处手动添加 UserSecretsId,然后在项目目录下通过命令来添加或删除配置项,例如:

dotnet user-secrets set "Foo:ApiKey" "123456" dotnet user-secrets remove "Foo:ApiKey"

如果 secrets.json 和 appsettings.json 有相同的配置项,程序会优先读取前者的值。

对于 secrets.json 的所有配置项,最好也在 appsettings.json 保留相应的占位,比如:

{
"ConnectionString": "
" // 其它配置 }

这样 appsettings.json 中的占位可以告诉其它开发者有这样一个配置。

这对于开源项目十分有用。

转载地址:http://skfsx.baihongyu.com/

你可能感兴趣的文章
分割视频文件或者是视频流
查看>>
精选9个值得学习的 HTML5 效果【附源码】
查看>>
查看Beyond Compare比较图片实际尺寸的方法
查看>>
Tomcat 安全配置与性能优化
查看>>
线性表顺序存储-练习题1
查看>>
jQuery中尺寸
查看>>
相信我!投资自己才是是最好的投资
查看>>
Linux下Mysql自启动
查看>>
Android Lifecycle组件 Proguard规则
查看>>
Python List数据的遍历
查看>>
spring3+hibernate4搭建
查看>>
编写GO的WEB开发框架 (十六): 增加自动的RESTful支持
查看>>
TypeError: environment can only contain strings
查看>>
图文介绍如何在Eclipse统计代码行数
查看>>
vmware11安装ubutnu15.10
查看>>
hi3507/hi3515交叉编译live555
查看>>
《Spring技术内幕》——阅读笔记
查看>>
Android RxJava 的详解(转)
查看>>
高并发限流处理
查看>>
Python学习day1作业总结
查看>>