3

我正在尝试找到最安全和最好的方法来保存和读取密码或敏感数据,例如,我可以在用 C# 编写的 selenium 测试自动化中使用这些方法。

存储和保护敏感数据似乎是一个非常棘手的话题。stackoverflow 中只有很少的问题超过 8 年并且没有帮助我解决我的问题。

我的要求是:

  • 密码不允许在代码或任何文件中仅通过打开它就可见
  • 同事应该能够使用它,而无需投入太多工作来使其运行。(例如 KeePass 可以工作,因为用户需要 2 个文件(key 和 key-db)才能从 keepass 中读取密码)
  • 我们使用 bitbucket 上传解决方案或分支。Bitbucket 运行所有代码,甚至不需要 Visual Studio(SonarQube 等)的测试。我们可以上传 .key 文件(例如来自 KeePass)来解密密码。

到目前为止我发现的用于存储/隐藏敏感数据的方法:

  • 加密和解密:我说它是最常见和最常用的方法。据我的同事说,这不是公司想要使用的东西,因为在已知加密方法的情况下解密密文太容易了。

  • 环境变量(ty Prophet 告诉我):似乎是一种超级安全的存储/隐藏密码的方法。敏感数据存储在 Windows 环境变量中,您只能在本地使用它。这里的问题是:我的每个同事都需要在 windows 中添加变量,我们使用 bitbucket 将我们的解决方案上传到服务器上,我们可以在不使用 Visual Studio 的情况下启动自动化测试。不确定这对我们来说是否可行。

  • KeePass(软件):似乎是存储和读取密码的最安全方式。用户需要 2 个文件 (Database.keyDatabase.kdbx) 才能访问密码。但是堆栈溢出中只有一个问题超过 10 年Link to question。从那以后,没有任何更新和有用的问题或 youtube 视频可以帮助我在 C# 中设置 keepass。但是 Visual Studio 中有用于 KeePass 的金块包。

  • 密码学(对称算法):我今天发现了一个微软视频链接到视频,他们在其中讨论了 .NET 核心中所有不同类型的密码学。他们提到了symmetric algorithm这似乎与 KeePass 类似。要解密密文,用户需要一个secret key. 尚不确定此方法是否可以解决我的问题,或者我是否可以使用它。

如您所见,我努力寻找解决方案。我仍然是编写代码的初学者。但我取得了很大进步,并在网络上深入搜索以提高我的技能的解决方案。尽管如此,这个话题还是让我发疯了,而且我还没有足够的经验知道如何从 0 开始编写代码或从哪里开始。

也许这里有人愿意投入一些精力和时间来How to set up KeePass in C#设置Symmetric Cryptography,因为这些话题在过去还没有那么多的关注。

如果这个问题得到一些关注会很好,所以它可能会帮助其他正在寻找相同答案的人。

4

1 回答 1

0

看一下ProtectedData类,它是 Windows DPAPI(数据保护 API)的包装器。它可用于加密每个 Windows 用户1的数据,因此其他用户无法解密它。

显然,如果有人可以作为同一个 Windows 用户(通过 DPAPI 加密数据)登录,他们可以通过请求 DPAPI 为他们解密数据。但是,如果您信任 Windows 用户并且他/她没有被破坏(此时您可能会遇到更大的问题),那么这应该是一个不错的测试解决方案。

编辑:我不确定这将如何在 bitbucket 下工作。我会在这里留下答案,以防有人发现它有帮助......


1 DataProtectionScope.CurrentUser

于 2021-07-27T11:37:02.407 回答