swisnl/laravel-encrypted-data

Laravel加密数据工具

2.1.0 2023-02-16 20:28 UTC

This package is auto-updated.

Last update: 2024-09-04 16:04:19 UTC


README

Latest Version on Packagist Software License Buy us a tree Build Status Coverage Status Quality Score Total Downloads Made by SWIS

本包包含多个Laravel工具,用于处理加密数据。

安装

通过Composer

$ composer require swisnl/laravel-encrypted-data

注意。使用Laravel 6-8?请使用本包的 1.x 版本。

使用方法

模型

警告

Laravel自8.12版本起支持加密铸件,因此新项目应使用该功能,而不是本包提供的模型。

我们旨在提供迁移到加密铸件的路径。有关更多信息,请参阅问题 #1

在你的模型中扩展 \Swis\Laravel\Encrypted\EncryptedModel 并定义加密字段。确保你的数据库列足够长,以免数据被截断!

protected $encrypted = [
    'secret',
];

你现在可以使用模型属性,一切都将自动加密/解密!

文件系统

config/filesystems.php 中配置存储驱动。

'disks' => [
    'local' => [
        'driver' => 'local-encrypted',
        'root' => storage_path('app'),
    ],
],

你现在可以使用存储方法,一切都将自动加密/解密!

已知问题/限制

由于加密,存在一些问题/限制

  1. 加密数据的大小大致增加了30-40%。

模型

  1. 你无法在SQL语句中查询或排序加密的列,但可以使用集合方法查询或排序结果;
  2. 所有数据在加密前都会进行序列化,解密后会进行反序列化,因此数据存储的方式与Laravel将其插入数据库的方式相同。你可以像平常一样使用Eloquent Mutators

文件系统

  1. 你不能使用公共磁盘,因为这将下载原始加密文件,所以使用 Storage::url()Storage::temporaryUrl() 没有意义;
  2. 你可以使用此磁盘的流,但我们内部始终将它们转换为字符串,因为整个文件内容需要一次加密/解密。

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全

如果你发现任何安全相关的问题,请通过电子邮件 security@swis.nl 而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件

本软件包是Treeware。如果您在生产环境中使用它,我们请求您为世界种一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

SWIS ❤️ 开源

SWIS是来自荷兰莱顿的一家网络机构。我们热爱与开源软件合作。