security - 安全存储和使用用户凭证测试环境的策略

标签 security authentication automated-tests protractor password-protection

问题

我正在现有的网络应用程序上设置一组 e2e 测试。这需要在登录页面(邮件和密码)上自动登录。到目前为止,由于我仍在开发测试,我一直将测试帐户凭据以明文形式放入我的测试脚本中。我一直在每次提交之前手动删除凭据,但它不会在某处服务器上进行适当的自动化测试,也不是所有开发人员都应该能够在他们自己的计算机上舒适地运行测试。此外,测试需要能够使用多组不同的用户凭据运行,并且凭据安全至关重要。由于我们需要测试访问权限,因此我们似乎无法避免至少拥有一个可以访问 secret 数据的测试帐户。



所以我的问题是:您知道或使用哪些策略在开发人员机器、单独服务器或两者的测试环境中安全地存储和使用测试凭证?

先前的研究

我花了几天时间浏览网络(主要是 StackOverflow,并多次尝试使用我的 Google-fu)并询问同事,但没有找到任何已知和使用的策略来处理和存储测试中的凭据。我想很多熟练的程序员一定已经通过多种方式解决了这个问题。

StackOverflow 好心地提出了这些有些相似的问题,它们提供了一些有趣的策略:

  • Safely storing credentials when I need to retrieve the password for use ,其中接受的答案建议加密配置文件。这似乎是一个非常有趣的想法,但我不清楚它在服务器和个人开发人员计算机上的分布情况,以及如何处理它的后勤。
  • Storing credentials for automated use ,其中询问者通过声明他们只是将凭据作为明文放在受密码保护的服务器上的文件中来回应自己。这可能适用于单个服务器,但我确实认为如果将使用多个本地开发人员机器或单独的测试服务器进行测试,这是有问题的。

  • 案例细节

    我认为无论实现细节如何,这个问题都具有普遍意义,但由于它们可能会引起人们的兴趣,因此无论如何都在此处提供。

    我正在使用 protractor用于测试 AngularJS应用程序,正在考虑 Grunt用于进一步的测试自动化。我们计划将测试挂接到我们的 Git 服务器上,并让它在每次提交到 master 分支时运行测试,这样我们就知道它永远不会中断。或者,至少在我们的测试期间不会中断:)

    最佳答案

    当您说“ 的策略”时,我不确定您的意思。安全 存储和使用用户凭据测试环境”。您声明您的测试需要使用不同的凭据集运行。如果您的测试能够以明文形式获取凭据,那么在同一帐户下运行的任何其他应用程序/用户也是如此。

    当然,您可以加密存储密码的文件,但您需要将加密 key 存储在应用程序或机器上的某个位置,以便应用程序能够对其进行解密。

    您可以使用非对称加密来使用公钥加密任何凭据,并且只允许运行测试的帐户访问私钥。但是,任何能够在运行测试的帐户下登录的人都可以解密凭据文件并获取密码。

    最好的选择是不在测试中使用 secret 数据。我在一家做医疗软件的公司工作,我们有一个测试域,我们在其中使用知名帐户设置我们的软件并使用虚假数据对其进行测试。

    或者,如果您希望其他开发人员能够在他们自己的凭据下运行测试,您可以考虑切换到 Kerberos 并避免使用密码。

    关于security - 安全存储和使用用户凭证测试环境的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169159/

    相关文章:

    security - .htaccess 用于 IIS?

    django - django 项目下拉 Bootstrap 中的登录表单

    authentication - 注销和记住 session 的最佳工作灯实践

    authentication - UseJwtBearerAuthentication 没有填充 User.Identity.Name

    node.js - 如何使用 Node.js 比较两个图像

    gradle - 如何使用命令行在Gradle中按类别运行测试?

    java - 保护属性文件?

    security - 防止PDF文件下载和打印

    python - Webdriver 下载完成后立即打开文件

    .net - 安装 x509 证书时使用哪个商店