存储敏感数据的最佳方式



我正试图找到最安全和最好的方法来保存和读取密码或敏感数据,以便在c#编写的Selenium测试自动化中使用。

要求:

  • 密码不允许在代码或任何文件中可见,只有打开它。
  • Co worker应该能够使用它而不需要投入太多的工作来运行它(KeePass将工作,因为用户需要2个文件(key和key-database)来读取密码)。
  • 我们使用Bitbucket上传解决方案或分支。Bitbucket运行所有代码,甚至不需要Visual Studio (SonarQube等)。我们可以上传。key文件(例如从KeePass)解密密码。

方法我发现:

  • 加解密: 我认为这是最常见的方法。这不是公司想要使用的东西,因为当加密方法已知时,解密密文太容易了。

  • 环境变量 :似乎是安全的。敏感数据存储在Windows环境变量中,您只能在本地使用它。问题是同事需要在Windows中添加变量,我们使用Bitbucket将我们的解决方案上传到服务器上,这样我们就可以在不使用Visual Studio的情况下启动自动化测试。我不确定这是否可能。

  • KeePass: 似乎是最安全的方法。用户需要2个文件(Database.keyDatabase.kdbx)来访问密码。但是只有一个问题可以帮助我在c#中设置KeePass。但是在Visual Studio中有用于KeePass的Nuget包。

  • 加密(对称算法): 一个关于。net核心中不同类型加密的微软视频提到了对称算法,它的工作原理似乎类似于KeePass。要解密密文,用户需要一个密钥。我不确定我是否可以使用这个

我使用KeePass,它非常适合我的Selenium测试。在. net 6中,从KeePass读取数据的Nuget包是:Nuget KPCLib.

这是在没有云服务的情况下存储和读取敏感数据最简单、最快的方法。

看看ProtectedData类,这是一个围绕Windows DPAPI(数据保护API)的包装器。它可以用来加密每个Windows用户1的数据,这样其他用户就不能解密了。

显然,如果有人可以以相同的Windows用户(通过DPAPI加密数据)登录,他们可以通过要求DPAPI为他们解密数据。但是如果你信任Windows用户并且他/她没有被入侵(在这一点上你可能有更大的问题),这应该是一个不错的测试解决方案。

编辑:我不确定这将如何在bitbucket下工作。我把答案留在这里,以防有人觉得有用。


<一口>1> /div>

相关内容

  • 没有找到相关文章

最新更新