messageconcept/secure_dotenv

加密环境配置处理器

0.4.1 2022-02-17 11:58 UTC

This package is not auto-updated.

Last update: 2024-09-20 03:00:13 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 库默认加密的随机字符串。此字符串应放置在脚本可以访问的文件中。

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

创建 .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 文件。如果配置中已设置值且您想覆盖它,请使用 encrypt 脚本的 --override 命令行标志。