maxlcoder/laravel-desensitization

dev-main 2024-07-18 08:46 UTC

This package is auto-updated.

Last update: 2024-09-18 09:09:39 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

针对 API 的敏感数据处理的中间件,配置形式,脱敏函数和脱敏方法均可自定义

安装

您可以通过 composer 安装此包

composer require maxlcoder/laravel-desensitization

配置

php artisan vendor:publish --provider="Maxlcoder\LaravelDesensitization\LaravelDesensitizationServiceProvider"
  • functions: 用于脱敏的全局辅助函数,例如 'mobile' => 'desensitiseMobile',使用全局辅助函数 desensitiseMobile 对 uris 中配置的 type 为 mobile 类型的 key 进行脱敏
  • class: 全局自定义脱敏类,name 表示类的全路径,这里只能填字符串,functions 表示类中脱敏类型对应的脱敏方法
  • 优先使用 functions 全局辅助函数,当全局辅助函数未指定时,才使用 class。如果两者均未配置,则不进行脱敏,但会有错误日志提示
  • uris: 全局需要进行脱敏的接口,以及接口返回中需要脱敏的字段名和脱敏类型,系统会对返回的数据结构进行解析,并进行迭代脱敏,其中数组 * 表示返回的数据是数组
[
    'functions' => [
        'mobile' => 'desensitise_mobile',
        'name' => 'desensitise_name'
    ],
    'class' => [
        'name' => 'App\Lib\Desensitization',
        'functions' => [
            'mobile' => 'desensitiseMobile',
        ],
    ],
    'uris' => [
        'admin/admins' => [
            ['key' => 'data.data.*.mobile', 'type' => 'mobile'],
            ['key' => 'data.data.*.name', 'type' => 'name'],
        ],
    ],
];

用法

Kerner.php 中引入中间件

protected $routeMiddleware = [
        ...
        
        'desensitization' => \Maxlcoder\LaravelDesensitization\Http\Middleware\Desensitization::class,
    ];

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件 liurenlin77@gmail.com 而不是使用问题跟踪器来报告。

鸣谢

许可

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

Laravel 包模板

此包是使用 Laravel 包模板 生成的。