swisnl / laravel-encrypted-data
Laravel加密数据工具
2.1.0
2023-02-16 20:28 UTC
Requires
- php: ^8.0
- laravel/framework: ^9.0|^10.0
- swisnl/flysystem-encrypted: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-04 16:04:19 UTC
README
本包包含多个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'), ], ],
你现在可以使用存储方法,一切都将自动加密/解密!
已知问题/限制
由于加密,存在一些问题/限制
- 加密数据的大小大致增加了30-40%。
模型
- 你无法在SQL语句中查询或排序加密的列,但可以使用集合方法查询或排序结果;
- 所有数据在加密前都会进行序列化,解密后会进行反序列化,因此数据存储的方式与Laravel将其插入数据库的方式相同。你可以像平常一样使用Eloquent Mutators。
文件系统
- 你不能使用公共磁盘,因为这将下载原始加密文件,所以使用
Storage::url()
和Storage::temporaryUrl()
没有意义; - 你可以使用此磁盘的流,但我们内部始终将它们转换为字符串,因为整个文件内容需要一次加密/解密。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全
如果你发现任何安全相关的问题,请通过电子邮件 security@swis.nl 而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。
本软件包是Treeware。如果您在生产环境中使用它,我们请求您为世界种一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。
SWIS ❤️ 开源
SWIS是来自荷兰莱顿的一家网络机构。我们热爱与开源软件合作。