存储脚本使用的密码的最不安全的方法是什么?

我有一个Bash脚本,可以使用我的用户名和密码自动对服务进行身份validation。 凭证当前以纯文本forms存储在脚本中。

在允许脚本访问的同时,我应该采取哪些预防措施来最安全地存储这些凭据?

澄清要点:

  • 据我所知,如果可以的话,应该使用其他身份validation方法。 我仍然想知道在密码validation是唯一选项的情况下该怎么做。
  • 完全没有存储密码在这里是不可接受的答案。 我问的是脚本必须无人值守访问密码的情况。

什么样的服务? 某些服务还有其他方法可以进行身份​​validation,例如SSH密钥和SSH代理。

我将密码与脚本分开存储,并确保所有路径组件都具有正确的权限集。 例如,确保路径/path/to/file//path/path/to由您信任的用户( root )拥有,并且这些不被不允许查看您的文件的人写入。 最后, file的建议权限是600或400。

file可能如下所示:

 PASSWORD='something that you cannot remember' 

在您的脚本中,使用以下代码导入变量:

 . /path/to/file 

至于你的脚本,请确保它不包含可能允许攻击者在脚本上下文中执行代码的漏洞(例如,可能具有任意$PATH变量集的无法控制的环境或无效使用其他文件(例如,采购世界可写的文件)。

至于密码的实际保护,你不能。 它必须以某种方式提供给其他服务。 作为替代方案,您可以使用opensslgpg加密包含密码的文件/脚本,因此您需要在解锁凭据之前输入密码。 如果您的服务密码难以记住,这将特别有用。

不是在文件中对密码进行硬编码,而是将密码存储在单独的文件中并保护文件( chmod 700chmod 500 ),以便只有授权用户才能访问它。

使用cat /dir/to/file/with/.password检索密码,而不是读取文件并将其内容存储到变量中。