在应用程序启动时,我必须提供对称密钥,这将在控制器中使用。我听说单例模式对于保密来说不够安全,所以我想知道IOptions
和Microsoft.Extensions.Options
的区别。IOptions
模式安全吗?或者可能有更好的替代方案?目前,它看起来像这样:
Startup.cs
services.Configure<EncryptingOptions>(cfg =>
{
cfg.SymmetricKey = symmetricKey;
});
。控制器:
private readonly EncryptingOptions _encryptingOptions;
public SomeController(IOptions<EncryptingOptions> encryptingOptions)
{
_encryptingOptions = encryptingOptions.Value;
}
机密的安全性与设计模式无关。
你绝对可以使用选项模式作为你的密钥,我建议你使用它,看看这篇来自Microsoft Learn的文章:
https://learn.microsoft.com/en-us/dotnet/core/extensions/options
你应该保证你的服务器和你的软件工件的安全,但有时我们需要允许其他人在我们的服务器上做一些事情(不要这样做!),所以在这些情况下,我们可以加密我们的配置,看看这篇关于app-secret的文章,这在你的情况下是有用的:
https://learn.microsoft.com/en - us/aspnet/core/security/app secrets?view=aspnetcore - 6.0,标签= windows
它使用环境变量。但是,您只是使访问这些信息变得更加困难,而不是完全安全,因为如果有人访问您的服务器,他/她可以看到任何东西!
老实说,你应该把你的文件和设置放在一个安全的地方。