.env
文件在配置现代 PHP 应用程序的特定环境变量方面起着关键作用。它是敏感信息(如数据库凭据、API 密钥和其他对应用程序功能和安全性至关重要的机密)的中心枢纽。然而,以明文形式存储敏感信息,即使是在.env
文件中,也会带来巨大的安全风险。加密是降低这些风险的重要一步,可确保即使发生未经授权的访问,您的敏感数据仍然受到保护。本文探讨了在 PHP 环境中加密.env
值的实用方法。
步骤 1:生成加密密钥
首先,我们需要一个强大的加密密钥。您可以使用 PHP 的openssl_random_pseudo_bytes
函数或 其他 PHP 加密库提供的类似方法生成安全密钥。
示例:
$key = bin2hex(openssl_random_pseudo_bytes(32));
echo "加密密钥: " . $key;
稳妥保存生成的加密密钥,它对加密和解密数据都至关重要。请勿将其存储在.env
文件或版本控制中。
步骤 2:加密.env
值
有了加密密钥,就可以在将敏感值添加到.env
文件之前对其进行加密了。PHP 的 OpenSSL 扩展提供了安全加密和解密数据的功能。
// 上一步生成的加密密钥字符串
$key = 'Your encryption key';
// 要加密的敏感数据
$dataToEncrypt = "Your sensitive data";
// 加密
$encrypted = openssl_encrypt($dataToEncrypt, 'aes-256-cbc', $key, 0, $iv);
echo "加密后的值: " . $encrypted;
加密敏感数据后,将加密值放入.env
文件,而不是明文内容。
步骤 3:在应用中解密获取并解密.env
值
要在 PHP 应用程序中使用加密值,请在运行时使用相同的密钥进行解密。
// 获取加密的 .env 值
$encryptedEnvValue = getenv('ENCRYPTED_ENV_VARIABLE');
// 加密密钥字符串(与加密时使用同一密钥)
$key = 'Your encryption key';
// 解密数据
$decrypted = openssl_decrypt($encryptedEnvValue, 'aes-256-cbc', $key, 0, $iv);
echo "解密后的值: " . $decrypted;
扩展:Laravel 中 .env 文件加密
从 9.32 版开始,Laravel 就内置了.env
文件加密方法。因此在 Laravel 中,加密.env
文件的方法非常简单:
php artisan env:encrypt
这将把.env
加密为.env.encrypted
,并提供一个密钥。您可以使用下面的命令解密该文件:
php artisan env:decrypt --key=your-key-here