安全地存储用户凭证(用户名/密码组合)以用于自动化测试

时间:2016-08-09 18:12:49

标签: c# automated-tests credentials

问题

我正在创建一组自动化测试,需要输入用户名和密码才能登录要测试的应用程序。我有一个函数LogOnToApplication(string username, string password),它将登录信息作为字符串,然后登录到应用程序。目前,我正在定义两个字符串:

string username = "username";
string password = "supersecretpassword";

传递给我的函数
utilities.LogOnToApplication(username, password);

这对于我的测试来说效果很好,但我知道以这种方式这样做是有风险和不安全的。这些测试分布广泛,以这种方式设置我的测试很容易导致安全漏洞。

问题

从我的代码中删除usernamepassword字符串的最佳方法是什么?我已经考虑创建一个单独的文件来存储这些信息,并在需要信息时从文件中提取,但这确实无法解决问题,它只是重新定位敏感信息。

2 个答案:

答案 0 :(得分:0)

您可以将它们放在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"];

答案 1 :(得分:0)

正如我在评论中写的那样,我认为你想要做的事情是不可能的。在某些时候,您的程序将需要运行行utilities.LogOnToApplication(username, password);,其中用户名和密码是纯字符串。如果程序在我的计算机上运行,​​我可以连接调试器并获取数据。有很多方法可以让它变得更难,但这场战斗是在黑客和游戏开发者之间展开的,失败者就是你想要加入的一方。

最安全的事情是重新考虑测试 - 你真的需要它们“广泛分发”吗?如果不,请不要。

有一些方法可以让你更难获得u / p,这一切都取决于你愿意付出多少努力。