为什么要将密钥存储在.env文件中?
如果黑客成功访问了服务器上的文件,并且他/她可以读取所有文件,包括所有PHP和所有.ENV文件,那么将密钥separeta存储在.ENV文件中是不可抗拒的,因为黑客也可以读取.ENV文件。
那么,为什么我们不将salt存储在PHP中,在那里我们可以生成哈希呢?
顺便说一句,我现在正在学习Codeigniter。(它有一个.env文件,其中存储了类似的东西(
简短的回答-保护一个文件的安全比保护整个源代码档案或存储库更容易
这是真的——如果黑客进入服务器,数据存储在哪里并不重要。他们可能会获得root访问权限,或者至少可以访问应用程序可以访问的任何内容,包括数据库、env文件等。
将机密保存在与源代码不同的文件中有几个原因。
-
env是部署软件的本地环境。您可能支持许多环境。甚至像当地的开发和生产一样简单。
-
源代码通常存储在github之类的文件中,您可以在其中签入文件。即使没有,源文件通常也有多个副本。通过电脑、电子邮件或投递箱。
更多的源代码副本意味着更多的人可以访问源代码。更多的机会让源代码最终落入坏人之手。源代码的安全性不如服务器上的env文件。
-
通常,保护源代码之外的一个文件的安全更容易。例如,我们使用对称密钥加密大量数据。我们知道我们必须对密钥保密,但不太担心加密数据。我们可以在地理位置不同的数据中心复制加密数据,而不必担心传输协议,因为我们知道我们只需要确保密钥的安全。
这与env文件类似——这是您需要保持更高安全级别的一件事,这样您就可以更自由地与团队共享源代码。如果你担心源代码中有凭证类型的材料,那么你(或你的安全团队(会更犹豫是否共享代码,从而影响你交付业务价值的能力。