Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在测试自动化中从源代码中删除用户名和密码?_C#_Security_Testing_Passwords_Credentials - Fatal编程技术网

C# 如何在测试自动化中从源代码中删除用户名和密码?

C# 如何在测试自动化中从源代码中删除用户名和密码?,c#,security,testing,passwords,credentials,C#,Security,Testing,Passwords,Credentials,我编写的测试自动化和脚本需要对域进行windows身份验证才能访问。 我不喜欢将它们保存在app.config中,因为它们是纯文本的。 我不喜欢提示输入,因为这样它就不再是自动的了。 如果我在程序集中硬编码它们,它们可以从.Net Reflector中看到,并且在我提交.cs文件时,它们会被签入源代码管理。 是否有一种模式/实践可以使配置的用户名和密码在不公开的情况下易于使用 这也适用于具有登录凭据的网站和使用windows身份验证或sql server身份验证进行连接的数据库。 任何建议都将不

我编写的测试自动化和脚本需要对域进行windows身份验证才能访问。
我不喜欢将它们保存在app.config中,因为它们是纯文本的。
我不喜欢提示输入,因为这样它就不再是自动的了。
如果我在程序集中硬编码它们,它们可以从.Net Reflector中看到,并且在我提交.cs文件时,它们会被签入源代码管理。
是否有一种模式/实践可以使配置的用户名和密码在不公开的情况下易于使用

这也适用于具有登录凭据的网站和使用windows身份验证或sql server身份验证进行连接的数据库。
任何建议都将不胜感激。

您可以使用和硬编码密码来提供基本的混淆


如果您真的想要更强大的功能,请使用like,例如,但这太过分了,您仍然需要将密钥存储在某个位置。

运行测试的过程可以将它们作为经过身份验证的用户。这样,在设置服务/计划任务等时,您只需输入用户名和密码。当然,如果您必须在测试中实际输入凭据,那么这将不会有帮助。

您不能使用DPAPI来保护它吗


有一篇有趣的MSDN文章@

这听起来像是一个可行的解决方案,特别是加密和将密钥存储在只有自动化工具才有权访问的地方。如果您可以将密钥存储在只有自动化工具才有权访问的地方,在那里存储密码不是更容易吗?您可以更进一步,在NTFS上设置一个加密文件,其中包含SQL server登录的密码。运行计划任务的用户帐户将能够读取加密文件的内容。基于我对NTFS加密的有限理解,它可以配置为限制从其他帐户访问该文件;这样,您就不必读取任何密码。