标题基本上说这一切,安装我的客户购买的CRM产品/前端(SugarCRM)时创build的默认config.php文件有以纯文本存储的MySQL数据库用户的密码?
有什么好的方法来encryption密码本身,所以它不只是坐在那里易于阅读的文件?
还是只是一个问题,如果有人已经访问该文件,那么你已经在一堆麻烦,因为他们已经在你的系统?
只是想知道这种情况下的最佳实践可能是什么?
Web应用程序的configuration文件一般都有明文的秘密。
大多数云主机供应商(IaaS / PaaS)支持在启动实例时传递自定义数据,以便它们可用作环境variables。 但是,应用程序必须进行修改以支持从环境variables中读取秘密。 参考一个Heroku的例子 。
有什么好的方法来encryption密码本身,所以它不只是坐在那里易于阅读的文件?
该文件的权限不应该是世界上可读的。
还是只是一个问题,如果有人已经访问该文件,那么你已经在一堆麻烦,因为他们已经在你的系统?
是。 进入系统是一个检查队友的情况。 强化系统是第一步。 必须在所有层,应用程序,数据库,操作系统,networking等进行硬化。
请记住,安全是一个移动的目标,从来没有完成。
还是只是一个问题,如果有人已经访问该文件,那么你已经在一堆麻烦,因为他们已经在你的系统?
是。
有一些方法可以通过encryptionscheme来部分缓解这种情况,将密码等直接加载到内存中,但是这些scheme实际上是关于混淆的。 如果你想要自动login到别的东西,你别无select,只能设置某种秘密,纯文本或不是,让它有能力做到这一点。 一旦你这样做了,一个系统妥协总是意味着这个秘密也被破坏了。 模式,使这更难以做到这一点……他们不会使它不可能。
需要自动login的高安全性系统通常使用详细的监控来检测滥用模式,而不是禁止访问。
唯一的方法是确保永远不要将密码提交给数字存储,并让人类input密码。
将来,我们会有人工智能来为我们做这个,但是现在,那就是我们所拥有的。