通过纯文本文件或命令行安全地将凭据传递给程序

时间:2012-04-03 01:38:59

标签: python security passwords pipe

我有一个我想要使用的程序(不是由我编写的)。它使用我想保密的用户名和密码对在线服务进行身份验证。身份验证信息可以通过两种方式传递给程序:直接作为命令行参数或通过明文配置文件,这两种方式都不是特别安全。

我想写一个Python脚本来管理这个程序的启动,并保持我的凭据远离机器其他用户的窥探。我在Linux环境中运行。我对命令行方法的担忧是,用于运行程序的命令行通过/proc文件系统对其他用户可见。同样,明文配置文件可能容易被具有适当权限的人(例如系统管理员)阅读。

有没有人有任何关于这样做的好方法的建议?如果我有某种方法来模糊系统其余部分在命令行中使用的参数,或者生成一次只能读取一次的配置文件的方法(从概念上讲,如果我可以将配置数据从脚本传递到程序),我会避免我的凭据可能被系统中的其他人读取的情况。

2 个答案:

答案 0 :(得分:0)

难题。如果您可以访问相关程序的源代码,则可以在启动后更改argv [0]。在* nix的大多数版本中,这都可以。

从安全角度来看,配置文件方法可能会更好。

如果可以在运行时指定配置文件,则可以生成临时文件(请参阅mkstemp),在此处写入密码并调用子进程。你甚至可以添加一个小的延迟(给子进程时间来做它的事情),甚至可能删除配置文件。

当然最好的解决方案是更改有问题的程序以从stdin读取密码(但听起来你已经知道了)

答案 1 :(得分:0)

在这种情况下,您唯一能做的就是将凭据存储在文本文件中,然后拒绝机器权限的所有其他用户读取或写入。事实上,只为这个脚本创建一个用户。加密并没有太大作用,因为你仍然必须在脚本中有密钥,或者脚本可以读取它,所以它是相同的基本攻击。