psecio/secure_dotenv

加密环境配置处理器

0.5.1 2024-01-02 13:55 UTC

This package is auto-updated.

Last update: 2024-08-31 00:35:32 UTC


README

secure_dotenv 库提供了一种简单的方式来处理 .env 文件中信息的加密和解密。

一般公认的安全最佳实践之一是防止使用任何类型的硬编码明文凭证。这个库允许你以加密字符串的形式存储 .env 中的值,但仍能透明地访问它们,而无需担心实现自己的加密方法。

Travis-CI Build Status

安装

下载 Composer 包

您可以通过命令行上的 Composer require 调用轻松安装此库

composer require psecio/secure_dotenv

生成密钥

首先,您需要生成加密密钥。该库使用 defuse/php-encryption 库来进行加密处理。

php vendor/bin/generate-defuse-key

这将生成一个用于与 php-encryption 库默认加密一起使用的随机字符串。此字符串应放置在脚本可以访问的文件中。

注意:根据安全最佳实践,此密钥文件应保持在与文档根目录之外(不可通过网络访问),但应由 web 服务器用户(或执行用户)可读。

创建 .env 文件

然后您需要创建一个 .env 文件,在其中放置值

touch /project/root/dir/.env

加载值

有了密钥文件和 .env,现在您可以创建一个新实例,该实例可用于读取加密的值

<?php
require_once __DIR__.'/vendor/autoload.php';

$keyfile = __DIR__.'/keyfile';
$envFile = __DIR__.'/.env';

$d = new \Psecio\SecureDotenv\Parser($keyfile, $envFile);

// The contents here is the set of all decrypted values fron the .env
print_r($d->getContent());
?>

您也不必使用文件作为密钥的来源 - 您可以使用字符串(可能是来自 $_ENV 变量或其他来源)

<?php
require_once __DIR__.'/vendor/autoload.php';

$key = $_ENV['ENCRYPTION_KEY'];
$envFile = __DIR__.'/.env';

$d = new \Psecio\SecureDotenv\Parser($key, $envFile);

?>

这可以用来帮助防止密钥被 本地文件包含 攻击读取。

如果您的 .env 文件中当前有未加密的值,库会将其传递过去,并仅返回从 .env 配置直接拉取的纯文本版本。

设置值

您还可以使用 Parser 类上的 save() 方法动态地将值设置到 .env 文件中

<?php
require_once __DIR__.'/vendor/autoload.php';

$keyfile = __DIR__.'/keyfile';
$envFile = __DIR__.'/.env';

$d = new \Psecio\SecureDotenv\Parser($keyfile, $envFile);

$keyName = 'test1';
$keyValue = 'foobarbaz';

if ($d->save($keyName, $keyValue)) {
    echo 'Save successful';
} else {
    echo 'There was an error while saving the value.';
}

无需担心加密值,因为库会为您处理,并将加密结果输出到 .env 文件。

通过 CLI 加密值

此库还提供了一个方便的方式来加密值并将其自动写入到 .env 配置中

vendor/psecio/secure_dotenv/bin/encrypt --keyfile=/path/to/keyfile

该工具将询问有关 .env 文件的位置以及要设置的键/值对的几个问题。完成时,它将新的加密值写入到 .env 文件中。如果您想覆盖已设置的配置值,请使用带有 --override 命令行标志的 encrypt 脚本。