【问题标题】:How to eliminate usernames and passwords from source code in Test Automation?如何从测试自动化的源代码中消除用户名和密码?
【发布时间】:2011-05-02 00:27:04
【问题描述】:

我编写测试自动化和脚本,需要对域进行 Windows 身份验证才能访问。
我不喜欢将它们保留在 app.config 中,因为它们以纯文本形式提供。
我不喜欢提示输入,因为它不再是自动化的。
如果我在程序集中对它们进行硬编码,它们可以从 .Net Reflector 中看到,并且在我提交 .cs 文件时它们会被检入源代码管理。
是否有一种模式/实践可以轻松使用配置的用户名和密码而不会暴露它们。

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

【问题讨论】:

    标签: c# security testing passwords credentials


    【解决方案1】:

    你不能使用 DPAPI 来保护它吗?

    有一篇有趣的 MSDN 文章@http://msdn.microsoft.com/en-us/magazine/cc164054.aspx

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您可以更进一步,在 NTFS 上设置一个包含 SQL 服务器登录密码的加密文件。运行计划任务的用户帐户将能够读取加密文件的内容。根据我对 NTFS 加密的有限了解,它可以配置为限制其他帐户对该文件的访问。
      • 或者测试用户可以使用Windows身份验证连接到SQL数据库;这样,您就不必阅读任何密码。
      【解决方案3】:

      您可以使用带有硬编码密码的Convert.ToBase64String()Convert.FromBase64String() 来提供基本的混淆。

      如果您真的想要更强大的东西,请使用symmetric-key algorithm,例如Blowfish,但这有点过头了,你仍然需要将密钥存储在某个地方。

      【讨论】:

      • 这听起来像是一个可行的解决方案,特别是加密并将密钥存储在只有自动化有权访问的地方。
      • 如果您可以将密钥存储在只有自动化工具有权访问的位置,那么将密码存储在那里不是更容易吗?
      猜你喜欢
      • 2015-03-10
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2015-01-07
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      相关资源
      最近更新 更多