安全存储用于自动测试的用户凭据(用户名/密码组合)
本文关键字:用户 密码 组合 用于 存储 自动测试 安全 | 更新日期: 2023-09-27 18:01:48
问题
我正在创建一组自动测试,需要提供用户名和密码才能登录到要测试的应用程序。我有一个函数LogOnToApplication(string username, string password)
,它将登录信息作为字符串,并登录到应用程序。目前,我正在定义两个字符串:
string username = "username";
string password = "supersecretpassword";
并通过传递到我的函数
utilities.LogOnToApplication(username, password);
这对我的测试来说很好,但我知道这样做是有风险和不安全的。这些测试分布广泛,以这种方式设置我的测试很容易导致安全漏洞。
问题
从我的代码中删除username
和password
字符串的最佳方法是什么?我曾想过创建一个单独的文件来存储这些信息,并在需要信息时从文件中提取,但这并不能解决问题,它只是重新定位了敏感信息。
您可以将它们放在AppSettings
下的App.Config文件中,并使用ConfigurationManager
获取它们
设置代码:
<appSettings>
<add key="username" value="lol" />
<add key="password" value="hunter2" />
</appSettings>
并访问它们
var username = ConfigurationManager.AppSetting["username"];
var password = ConfigurationManager.AppSetting["password"];
正如我在评论中所写的,我认为你想做的事情并不可能。在某些情况下,您的程序将需要运行行utilities.LogOnToApplication(username, password);
,其中username和password是纯字符串。如果程序在我的计算机上运行,我可以连接调试器并获取数据。有办法让它变得更难,但这场战斗是黑客和游戏开发商之间的战斗,而失败者是你试图加入的一方。
最安全的事情是重新思考测试——你真的需要它们"广泛分布"吗?如果没有,就不要。
有一些方法可以让你更难获得u/p,这完全取决于你愿意为此付出多少努力。