我正在编写selenium (seleno)脚本来测试一个需要用户登录的c# MVC web应用程序。目前,用户名和密码已硬编码到脚本中,但在将脚本提交到代码存储库之前,我需要确保密码受到保护。
脚本将通过CI (TeamCity)自动运行,因此密码必须在没有任何人工输入的情况下提供给程序。
在安全性要求方面,密码是devs之间的常识,但它也与部署到客户端的软件捆绑在一起(这显然为任何拥有密码的人打开了后门--不管是好是坏)。因此,如果有人访问了我们的代码库,我们需要确保他们无法获得密码。密码本身存储在sqlite数据库中(盐渍)。
如果我将一个加密的值传递到程序中,然后解密,这会保护我们吗?我不太担心密码在服务器上的内存中运行,因为该服务器应该被安全地锁定,并且只有在测试期间才会存在。
我唯一能想到的另一件事是,一旦TeamCity生成了temp服务器实例,并且在测试运行之前,就将临时密码插入sqlite数据库。不过,我不知道如何做到这一点。
我本以为这将是硒的一个非常普遍的问题,但我至今还没有找到明确的解决办法。
发布于 2014-10-22 08:42:19
正如SiKing所建议的那样,解决方案是使用一个临时的、测试特定的密码,它不会被输入到生产代码中。小甜饼。
发布于 2018-04-27 21:22:14
解决方案是在运行时设置密码。我建议环境变量。然后,它们不在您的代码库中,而是需要有人黑进您运行测试的地方。
发布于 2016-07-18 00:33:56
我使用的一种方法是执行javascript来评估事物:
<td>storeEval</td>
<td>prompt("What password")</td>
<td>secretPassword</td>不过,这只适用于用户通过webdriver运行的东西。
您可以在测试开始时对http://localhost/credentials.json或类似的类设置某种小的ajax请求,这是在CI实例上设置的(但在其他任何地方都不可用)。
https://stackoverflow.com/questions/26489344
复制相似问题