如何存储脚本的用户凭据

时间:2015-06-30 15:26:41

标签: perl batch-file clearquest

我需要使用旧版本的ClearQuest 7,我们安装中启用的唯一API是VBA(Excel)和RatlPERL。 (REST API对我们来说不是一个选项 - 尽管它遇到了相同的明文凭证问题。)

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

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

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

query.bat %userid% %password% 

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

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

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

2 个答案:

答案 0 :(得分:3)

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

另一个是 - 将数据存储在静止状态。

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

毕竟,通过在您的脚本中插入print $password的简单权宜之处......他们几乎可以绕过任何可以控制它的控件。特别是如果他们在你的盒子上有管理员权限,那么......你真的无能为力。

我提供的解决方案:

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

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

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

答案 1 :(得分:1)

由于安全级别不是很高,或许可以考虑创建一个简单的exe?密码可能会以某种方式从内存中读出,但我猜这种方式会产生足够大的障碍。

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

http://www.battoexeconverter.com/

HTH