re2bit/yii2-secrets

Yii2 的密钥存储和提取器

安装: 2

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

1.0.0-alpha.1.2 2024-06-21 08:59 UTC

This package is auto-updated.

Last update: 2024-09-21 09:28:07 UTC


README

本模块提供了一种安全的方式来管理敏感信息,灵感来源于 Symfony Secrets 功能。它设计为与 PHP 7.0 兼容,利用 Sodium 扩展或 paragonie/sodium_compat 进行现代加密。

要求

  • PHP 7.0 或更高版本
  • Sodium PHP 扩展或 paragonie/sodium_compat
  • Yii 2

设置

  1. 安装依赖项:确保在您的 PHP 环境中启用了 Sodium 扩展,如果没有,请安装 paragonie/sodium_compat

  2. 配置 Yii2 应用程序:修改您的 Yii2 应用程序配置以包含 Secrets 模块。以下是设置方法

    • 更新 Composer:确保您的 composer.json 文件包含必要的库,并更新您的项目依赖关系

      composer require paragonie/sodium_compat

      如果没有 Sodium PHP 扩展,这将安装与 PHP 7.0 兼容所需的库。

    • 修改配置文件:在您的 Yii2 应用程序配置文件中(通常是 config/main.php 或 Web 应用程序的 config/web.php),添加以下配置以集成管理密钥的 Vault 组件

      'components' => [
          'cache' => [
              'class' => 'yii\caching\FileCache',
          ],
          'vault' => [
              'class' => 'Re2bit\Yii2Secrets\Vault',
          ],
      ],
      'container' => [
          'definitions' => [
              'Re2bit\Yii2Secrets\Vault' => [
                  'keysDir' => '@app/config/secrets', // adjust the path as needed
              ],
          ],
      ],
    • 调整入口点:在应用程序的入口点中,例如 Web 应用程序的 index.php 或控制台应用程序的 yii 脚本中,初始化 Vault 和 ConfigDecryptAdapter

      $vault = new Vault(['keysDir' => __DIR__ . '/config/secrets']);
      $configDecryptAdapter = new ConfigDecryptAdapter($vault);
      $configDecryptAdapter->parse($config);

此设置确保您的 Yii2 应用程序在 PHP 7.0 下也能安全地管理密钥,利用现代加密标准。

在配置中使用密钥

要将密钥包含在配置中,请使用 %vault(secretName)% 格式。在解析配置时,这些占位符将替换为其解密值。

示例

$config = [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=mydatabase',
            'username' => '%vault(DB_USERNAME)%',
            'password' => '%vault(DB_PASSWORD)%',
        ],
    ],
];

在此示例中,%vault(DB_USERNAME)%%vault(DB_PASSWORD)% 将在配置解析过程中替换为其各自的解密值。

许可证

此软件包可在 MIT 许可下使用。

致谢

此库基于并受到以下人员工作的启发:

  • Tobias Schultze
  • Jérémy Derussé
  • Nicolas Grekas

来自 Symfony 框架。它已被调整为与 PHP 7.0 兼容,重点在于使用 Sodium 进行加密。