gpt4 book ai didi

c# - 使用 SecureString 进行配置真的安全吗?

转载 作者:行者123 更新时间:2023-12-02 07:31:27 27 4
gpt4 key购买 nike

在我的一次代码审查中,我偶然发现了 SecureString 的一个有趣的实现。从逻辑上讲,隐藏内存中的值是有好处的,但我对 IConfiguration 的理解是,当通过 ConfigurationBuilder 注入(inject)和构建时,内存中已经存在一个副本可供使用。因此,尽管 SecureString 隐藏了明文值,但配置访问会自动否定密文。

我的想法是否正确,实际上该值是不安全的,甚至不应该使用 SecureString 因为它一开始就不安全 -

public class Sample
{
private readonly SecureString secret;
public Sample(IConfiguration configuration) => secret = new NetworkCredentials(String.Empty,
configuration.GetSection("Api:Credentials")["secret"]).SecurePassword;
}

最佳答案

基本上在文档中提到:

Overall, SecureString is more secure than String because it limits the exposure of sensitive string data. However, those strings may still be exposed to any process or operation that has access to raw memory, such as a malicious process running on the host computer, a process dump, or a user-viewable swap file. Instead of using SecureString to protect passwords, the recommended alternative is to use an opaque handle to credentials that are stored outside of the process.

在某些平台上它甚至没有实现。它甚至在某些时候在.net框架中变成了字符串,那么为什么它会在那里呢?使用它有意义吗?

对您的评论:

Is my notion is correct, really the value is insecure and should not even use SecureString because it is not secure to begin with-

使用它确实有意义。认为该值 100% 安全是没有意义的,它只是增加了额外的安全层。

它确实限制了暴露,这是我们在安全编码时应该努力实现的目标。

使用它的一些完全有效的理由可以在这个优秀的答案中找到:Is SecureString ever practical in a C# application?

我能想到的另一个场景:如果您使用某种远程 key 存储,例如 azure key vault ,使用它更有意义。

关于c# - 使用 SecureString 进行配置真的安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com