miranj/craft-cryptographer

添加Twig过滤器以执行加密操作。

安装数量: 10,226

依赖关系: 0

建议者: 0

安全: 0

星标: 13

关注者: 3

分支: 2

开放问题: 2

类型:craft-plugin

1.2.0 2024-04-13 17:33 UTC

This package is auto-updated.

Last update: 2024-09-13 18:30:08 UTC


README

Cryptographer icon

密码学

Craft CMS 插件,它添加了 Twig 过滤器,通过URL安全的字符串进行加密和解密内容。适用于以下情况:

  • 生成一次性URL,例如用于私有页面
  • 将数字ID如521转换为字符串,例如在youtube.com/watch?v=dQw4w9WgXcQ
  • 生成用户或条目的URL,而不暴露他们的用户名、别名或ID

内容

使用方法

Cryptographer提供了两种将数据转换为密文,以及从密文转换回原始数据的方法。一种方法是加密安全的,基于Craft的安全组件(该组件反过来基于Yii的)。另一种方法是不安全的,基于流行的Hashids库。两种方法都产生URL安全的字符串。

安全加密

使用此方法加密敏感信息。它与本地的encenc过滤器不同,输出始终是URL安全的字符串。请注意,每次生成的密文都将不同。因此,这适用于生成一次性令牌,但不是生成永久URL的好选择。

模板

{{ 'Sensitive data' | encrypt }}
{{ 'Y3J5cHQ64Q8YoiXmSUYq6c2mcg6YjmVjNTBkNGViNmE4M2FiNTVmYTdkZTUyYjJhZmNjNzY5NWRiNDc5M2ExNzRhZTE1ZWZmMjU2NzFkMDNhMzEyZWIX9Rj4f4vOKB2XCljjXha3aKfJw4c6D-T7zMoXhKpeFw=='
   | decrypt }}

API

$ciphertext = \miranj\cryptographer\Plugin::getInstance()->cryptographer->encrypt('Sensitive data');
$originaltext = \miranj\cryptographer\Plugin::getInstance()->cryptographer->decrypt($ciphertext);

数字掩码

重要:此方法不应被视为加密安全的。避免用于编码敏感数据,如密码。

此方法将数字如457转换为字符串如'qan8deK8'。使用此方法对元素ID(或ID列表)进行掩码,以便在URL中使用。它是流行的Hashids库的包装器。

模板

{{ user.id | maskNumbers }}
{{ 'qan8deK8' | unmaskNumbers }}

API

$mask = \miranj\cryptographer\Plugin::getInstance()->cryptographer->maskNumbers([521]);
$numbers = \miranj\cryptographer\Plugin::getInstance()->cryptographer->unmaskNumbers('qan8deK8');

旧方法

重要:此方法不应被视为加密安全的。避免用于编码敏感数据,如密码。

Cryptographer提供了一种第三种掩码和解码字符串的方法,该方法在v1.x版本中已弃用。它仅提供与使用Craft 2版本此插件(v0.x)的网站向后兼容,并且需要将内容转换回原始格式。

maskLegacy

{{ 'Do not use for sensitive data' | maskLegacy }}
{{ 'Do not use for sensitive data' | maskLegacy | url_encode }}
{{ 'Do not use for sensitive data' | maskLegacy('AES-128-CFB') }}

此过滤器接受两个可选参数。

  • $method — 要使用的加密方法。可能的方法可以通过openssl_get_cipher_methods()确定。默认使用AES-256-CBC方法。
  • $iv — 初始化向量。如果没有提供初始化向量,则每次都使用随机值。

unmaskLegacy

{{ '66e46cfa6029c1484jTssikEhQXOk4BvYXWfu1M82R3Ifh1kVxQYmxoGwKc=' | unmaskLegacy }}
{{ '9b3c72940c8318b7dGbekO6uMVIAxk7UFA1f0A5tTuoqBo1Vn0jRb3ZjN54=' | unmaskLegacy('AES-128-CBC') }}

此过滤器接受一个可选参数。

配置

要配置Cryptographer,在您的config/文件夹中创建一个cryptographer.php文件,该文件返回一个数组。此文件支持Craft的标准多环境配置

以下是一个示例配置文件,以及所有可能的设置及其默认值列表。

<?php

return [
    // hashids
    'hashidsMinLength' => 15,   // pad output to fit at least a certain length
    'hashidsAlphabet' => null,  // use a custom alphabet, eg: 'abcdefghijklmnopqrstuvwxyz'
    
    // legacy
    'secret' => null,           // defaults to using Craft's securityKey
];
  • hashidsMinLength – 配置Hashids以确保输出字符串达到特定长度。生成的字符串可能不会正好是这个长度,但不会短于此数。

  • hashidsAlphabet – 使用自定义字母表生成输出字符串。Hashids默认使用的字母表为 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'

  • secret – 一个私有的、加密安全的密钥,用于加密和解密数据。默认值为 null,在这种情况下,插件将使用Craft的通用配置中的securityKey

    此设置仅保留作历史原因,即如果您正在迁移Craft 2网站。只有在您需要解密此插件Craft 2版本的密文时才应显式设置。在从Craft 2迁移之前,请从设置 > 插件 > Cryptographer > Secret复制值。

安装

您可以从插件商店或使用Composer安装此插件。

从插件商店

转到项目控制面板中的插件商店,搜索“Cryptographer”。然后在弹出的窗口中点击“安装”按钮。

使用Composer

打开终端并运行以下命令

# go to the project directory
cd /path/to/project

# tell composer to use the plugin
composer require miranj/craft-cryptographer

# tell Craft to install the plugin
./craft plugin/install cryptographer

要求

此插件需要Craft CMS 3、4或5。Craft 2版本可在v0分支中找到。

Miranj提供