在命令行中隐藏密码字段

Hiding password field in command line

我正在 FreeBSD 上编写系统服务,我需要获取用户凭据来验证身份,如下所示:

./compression_bin -i <input_file> --type=<type> --password=<secret key>

此处,密钥用于在压缩给定文件之前对用户进行身份验证。目前,秘密密钥出现在历史记录中,这是不好的并且可以被利用。有没有一种方法可以在不显示密码字段的情况下调用上面的内容:

./compression_bin -i <input_file> --type=<type> --password=*********

历史记录将始终记录发出命令时的文本。您可以想像地返回并修改历史文件,但这不仅令人讨厌,而且它仍然提供了一个 window,可以在其中读取密码。

此外,这还不是最简单的漏洞利用。如果密码是在命令行上给出的,那么当命令是 运行 时,还有其他方法可以读取密码,例如从 ps 命令的输出中读取,所有用户都可以访问。

所以不要将密码作为命令行参数。从文件、标准输入、套接字或其他类似的东西读取它。