在我的生产环境中,现在我已经对密钥进行了硬编码:
new SigningCredentials(new SymmetricSecurityKey("my jey bla bla"), SecurityAlgorithms.HmacSha256Signature);
将密钥移动到配置文件是个坏主意,将其放在这里更糟。存储和使用对称安全密钥的最佳方法是什么?谢啦,谢啦
41zrol4v1#
最佳做法是将机密存储在环境变量中。窗口:
SET JWT_KEY="my jey bla bla"
Linux操作系统:
export JWT_KEY="my jey bla bla"
然后,要在代码中访问它,可以使用System.Environment类。具体来说,Environment.GetEnvironmentVariable方法:
string jwtKey = Environment.GetEnvironmentVariable("JWT_KEY");
oo7oh9g92#
我认为前面给出的两个答案都是错误的。1)环境变量和2)秘密管理器工具都只能在开发中使用。请阅读以下内容:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0#security-and-user-secrets微软给我们的“唯一”安全选项是Azure Key Vault。恐怕我总是在appsettings.json上设置这些东西,因为这似乎是唯一负担得起的方法。如果有人知道更好的方法,请与我们分享...祝福
kcrjzv8t3#
对于开发环境中的机密,您可以将其存储在环境变量中或使用Visual Studio中的机密存储。您可以read about it here。对于测试、集成或开发,您可以使用CI中可用的机密逻辑。(假设您的CI支持此功能。)(例如,在GitLab中,您可以read about it here。)
环境变量
环境变量用于避免在代码或本地配置文件中存储应用机密。环境变量会重写所有以前指定的配置源的配置值。考虑一个启用了“个人用户帐户”安全性的ASP.NET核心Web应用。默认数据库连接字符串包含在项目的appsettings.json文件中,键为DefaultConnection。默认连接字符串用于LocalDB,它在用户模式下运行,不需要密码。在应用部署期间,DefaultConnection键值可以被环境变量的值覆盖。环境变量可以存储带有敏感凭据的完整连接字符串。
警告
机密管理器工具在开发ASP.NET核心项目期间存储敏感数据。在此上下文中,敏感数据就是应用机密。应用机密存储在与项目树不同的位置。应用机密与特定项目关联或在多个项目之间共享。应用机密不签入源代码管理。
3条答案
按热度按时间41zrol4v1#
最佳做法是将机密存储在环境变量中。
窗口:
Linux操作系统:
然后,要在代码中访问它,可以使用System.Environment类。具体来说,Environment.GetEnvironmentVariable方法:
oo7oh9g92#
我认为前面给出的两个答案都是错误的。1)环境变量和2)秘密管理器工具都只能在开发中使用。请阅读以下内容:
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0#security-and-user-secrets
微软给我们的“唯一”安全选项是Azure Key Vault。恐怕我总是在appsettings.json上设置这些东西,因为这似乎是唯一负担得起的方法。如果有人知道更好的方法,请与我们分享...祝福
kcrjzv8t3#
对于开发环境中的机密,您可以将其存储在环境变量中或使用Visual Studio中的机密存储。您可以read about it here。对于测试、集成或开发,您可以使用CI中可用的机密逻辑。(假设您的CI支持此功能。)(例如,在GitLab中,您可以read about it here。)
环境变量
环境变量用于避免在代码或本地配置文件中存储应用机密。环境变量会重写所有以前指定的配置源的配置值。
考虑一个启用了“个人用户帐户”安全性的ASP.NET核心Web应用。默认数据库连接字符串包含在项目的appsettings.json文件中,键为DefaultConnection。默认连接字符串用于LocalDB,它在用户模式下运行,不需要密码。在应用部署期间,DefaultConnection键值可以被环境变量的值覆盖。环境变量可以存储带有敏感凭据的完整连接字符串。
警告
机密管理器工具
机密管理器工具在开发ASP.NET核心项目期间存储敏感数据。在此上下文中,敏感数据就是应用机密。应用机密存储在与项目树不同的位置。应用机密与特定项目关联或在多个项目之间共享。应用机密不签入源代码管理。
警告