3

我需要使用旧版本的 ClearQuest 7,并且在我们的安装中启用的唯一 API 是用于 VBA (Excel) 和 RatlPERL。(REST API 不是我们的选择——尽管它也存在同样的明文凭证问题。)

我编写了一个ratlperl 脚本,它执行对缺陷数据库的查询,并生成csv 输出。请注意,ratlperl 需要明文用户凭据进行身份验证。

ratlperl query.cqpl -u %userid% -p %password% -q "%query%" -c %outfile%

该脚本是从Windows 批处理文件中调用的。从不带参数的 Windows 命令行运行时,批处理文件会请求用户凭据,但它们也可以作为参数提供。

query.bat %userid% %password% 

我触发日常查询,用户凭据作为批处理文件的参数传递。

这一切都很好,但我宁愿不以这种方式存储明文密码。注册表是一种可能性,但任何有权访问机器的人都可以访问这些凭据。

如何以某种安全的方式存储这些凭据?

4

2 回答 2

3

有两件事需要注意。一个是让您的进程列表“显示”身份验证凭据。特别是在 Unix 上——如果你运行ps它,它会显示参数,其中可能包括用户名和密码。处理这种情况的方法主要是“从文件中读取,而不是从 arg 列表中读取”。在 Unix 上,您还可以修改$0以更改显示方式ps(但这无助于命令历史记录,而且它也不完美,因为在应用之前会有很短的时间)。

另一个是 - 存储静态数据。

这有点困难。从根本上说,没有多少解决方案可以让您的脚本访问不允许恶意用户这样做的凭据。

毕竟,通过将 aprint $password插入脚本的简单权宜之计……它们几乎绕过了您可以对其进行的任何控制。尤其是如果他们对您的盒子具有管理员访问权限,此时……您真的无能为力。

我会提供的解决方案:

使用(明文)用户名和密码创建一个文件。设置它的最低权限。以具有特权的用户身份运行脚本,但不要让其他任何人访问该用户帐户。

这样其他人可以“看到”您的脚本(并且可能需要运行它)但不能复制它/破解它/自己运行它。

我建议sudo在 Unix 上这样做。对于 Windows,我不确定您有多少粒度RunAs- 这值得一看,或者有一个计划任务作为您的服务帐户运行,并选择任何人都可以生成的“请求文件”进行处理。

于 2015-06-30T15:45:23.870 回答
1

由于安全级别不需要那么高,也许考虑创建一个简单的exe?密码可能会以某种方式从内存中读出,但我想这种方式会造成足够大的障碍。

或者这样的事情可能会有所帮助?

http://www.battoexeconverter.com/

高温高压

于 2015-06-30T22:37:03.047 回答