我在FreeBSD上编写一个系统服务,我需要获取用户凭据来验证身份,如下所示:
./compression_bin -i <input_file> --type=<type> --password=<secret key>
这里,秘密密钥用于在压缩给定文件之前验证用户。目前,秘密密钥出现在历史中,这是很糟糕的,可以被利用。有没有办法可以调用上面而不显示密码字段:
./compression_bin -i <input_file> --type=<type> --password=*********
历史记录将始终记录命令的文本。你可以想象回去修改历史文件,但这不仅是令人讨厌的,它仍然提供了一个可以读取密码的窗口。
而且,这甚至不是最简单的漏洞。如果在命令行上给出了密码,那么在命令运行时可以通过其他方式读取密码,例如来自ps
命令的输出,所有用户都可以访问该命令。
所以不要将密码作为命令行参数。从文件或标准输入或套接字或其他类似的东西中读取它。