首页 文章

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

提问于
浏览
0

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

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

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

2 回答

  • 0

    艰难的问题 . 如果您可以访问相关程序的源代码,则可以在启动后更改argv [0] . 在* nix的大多数风格上,这将起作用 .

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

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

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

  • 0

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

相关问题