我正试图找到最安全和最好的方法来保存和读取密码或敏感数据,以便在c#编写的Selenium测试自动化中使用。
要求:
- 密码不允许在代码或任何文件中可见,只有打开它。
- Co worker应该能够使用它而不需要投入太多的工作来运行它(KeePass将工作,因为用户需要2个文件(key和key-database)来读取密码)。
- 我们使用Bitbucket上传解决方案或分支。Bitbucket运行所有代码,甚至不需要Visual Studio (SonarQube等)。我们可以上传。key文件(例如从KeePass)解密密码。
方法我发现:
-
加解密: 我认为这是最常见的方法。这不是公司想要使用的东西,因为当加密方法已知时,解密密文太容易了。
-
环境变量 :似乎是安全的。敏感数据存储在Windows环境变量中,您只能在本地使用它。问题是同事需要在Windows中添加变量,我们使用Bitbucket将我们的解决方案上传到服务器上,这样我们就可以在不使用Visual Studio的情况下启动自动化测试。我不确定这是否可能。
-
KeePass: 似乎是最安全的方法。用户需要2个文件(
Database.key
和Database.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>一口>