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

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

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

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

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

Windows: %APPDATA%/Microsoft/UserSecrets/<UserSecretsId>/secrets.json
Linux  : ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json
Mac    : ~/.microsoft/usersecrets/<UserSecretsId>/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": "<your connection string here>",// 其它配置
}

这样appsettings.json中的占位可以告诉其它开发者有这样一个配置。这对于开源项目十分有用。

保护 .NET Core 项目的敏感信息相关推荐

  1. 如何保护 SpringBoot 配置文件中的敏感信息

    今日推荐 Java 8 一行代码解决了空指针问题,太厉害了...List中remove()方法的陷阱,被坑惨了!25000 字详解 23 种设计模式,原来可以这么简单!最牛逼的 Java 日志框架,性 ...

  2. Spring Boot 配置中的敏感信息如何保护?

    在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...

  3. 个人的敏感信息需要怎么进行安全保护的一些思考记录

    (一)识别监管要求聚焦安全保护重点 个人信息处理 原则合规 <个人信息保护法 >总则中规定了个人信息处理的合法.正 当.必要.诚信.公开透明等,这些基本原则既是处理者开展个人 信息处理活动 ...

  4. Web应用防火墙的敏感信息泄露保护功能可以防护哪些敏感数据泄漏?

    背景信息 防敏感信息泄漏功能是Web应用防火墙针对<网络安全法>提出的"网络运营者应当采取技术措施和其他必要措施,确保其收集的个人信息安全,防止信息泄露.毁损.丢失.在发生或者可 ...

  5. 如何保护个人隐私和敏感信息不被黑客窃取?

    网络安全是当前世界面临的最大挑战之一.黑客们不断进化和发展出更加高级的攻击技术,导致我们的个人隐私和敏感信息遭受威胁.在这篇文章中,我将会分享一些关于如何保护我们的个人隐私和敏感信息不被黑客窃取的重要 ...

  6. Springboot项目使用jasypt加密配置文件中的敏感信息

    目录 目录 项目背景 需求 jasypt简介 使用 0,版本对应关系 1,引入依赖 2,启用加密 2.1,在启动类上配置注解 2.2,启用注解扫描和@Configuration配置 2.3,只针对指定 ...

  7. SpringBoot项目中配置文件敏感信息(数据用户名、密码)的加密

    一.引入POM <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>j ...

  8. 【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程...

    上篇文章介绍了基于Ids4密码授权模式,从使用场景.原理分析.自定义帐户体系集成完整的介绍了密码授权模式的内容,并最后给出了三个思考问题,本篇就针对第一个思考问题详细的讲解下Ids4是如何生成acce ...

  9. php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案

    前言: ThinkPHP MVC框架越来被开发者接受,众多的开发者选择了这个框架,也有很多的优秀项目使用的ThinkPHP框架.最近整理了一下ThinkPHP项目的一些安全配置.可能并不适用全部项目, ...

最新文章

  1. 《jQuery Mobile入门经典》—— 2.7 练习
  2. Linux基础命令(3)
  3. bootstrap 模态窗口 多重/多个弹窗滚动条补丁
  4. [Python_6] Python 配置 MySQL 访问
  5. linux系统是微内核结构,科普:微内核操作系统现状
  6. java 程序语言中的LinkedList 集合基本方法演示
  7. 计算机片段教学优秀教案,精彩教学片段100例—导入篇(1)
  8. 11·25发布!OPPO Reno7系列正式官宣:定位高颜值实力派
  9. redis的info
  10. EditPlus运行java时如何从键盘输入数据
  11. Go语言学习笔记(四)结构体struct 接口Interface 反射reflect
  12. autotools 学习
  13. 算法:回溯九 Plus在数字字符串中加入加号,求所有情况的和
  14. 解决Maven项目pom文件中出现的错误:Missing artifact oracle:ojdbc7:jar:12.1.0.2.0:compile
  15. Java毕设项目宠物管理系统计算机(附源码+系统+数据库+LW)
  16. pam php水解加碱,2钻井液化学.ppt
  17. 小米9pro计算机打不开,小米9 Pro刷机教程,线刷升级更新官方系统包
  18. mq使用replyto队列进行消息回复
  19. SSL/TLS/DTLS对比
  20. Python真香之爬取古诗文网

热门文章

  1. [NOIP2015提高组]运输计划
  2. PHP require和include的区别
  3. visual studio toolbox 修复
  4. SVN的安装笔记和要注意的问题
  5. 直播源码中有哪些网络协议需要注意?
  6. 【MAC】Ncnn 编译so文件方案
  7. 软件工程—团队作业1
  8. 阿里云MaxCompute香港开服 将引入更多人工智能服务
  9. SSH连接linux时,长时间不操作就断开的解决方案
  10. 《移动App测试的22条军规》—第1章1.2节移动App的生命周期