我正在寻找(1)最安全和(2)最简单的方法,让用户在bash shell提示符下键入密码,并使该密码成为程序stdin的一部分。
这是stdin需要的样子:{"username":"myname","password":"<my-password>"}
,在<my-password>
shell提示中键入的内容在哪里。如果我可以控制stdin程序,则可以对其进行修改以安全地提示输入密码并将其放置到位,但是下游命令是标准的通用命令。
我已经考虑并拒绝了使用以下方法:
- 用户在命令行中输入密码的密码:该密码将显示在屏幕上,并且也将通过“ ps”显示给所有用户
- shell变量插值到外部程序的参数中(例如
...$PASSWORD...
):通过“ ps”,所有用户仍然可以看到密码 - 环境变量(如果它们留在环境中):密码对所有子进程都是可见的;如果可信赖的进程在诊断中转储核心或转储环境变量,它们甚至可能会暴露密码。
- 密码在文件中放置的时间过长,甚至是权限很严格的文件:用户可能会意外泄露密码,而root用户可能会意外看到密码
我在下面将我当前的解决方案作为答案,但是如果有人提出一个答案,我会很乐意选择一个更好的答案。我认为应该有一些简单的方法,或者可能有人看到我错过的安全问题。