yorcreative / laravel-scanator
一个 Laravel 扩展包,提供检测数据库中敏感信息和模式的功能,通过允许开发者轻松地将数据库扫描功能集成到他们的应用程序中,并采取主动措施来保护敏感数据,从而帮助确保数据隐私和安全。
Requires
- php: ^8.1
- illuminate/contracts: ^v9|v10.*
- yorcreative/laravel-scrubber: v2.6.2
Requires (Dev)
- ext-pdo_sqlite: *
- laravel/pint: ^1.0
- orchestra/testbench: *
- phpunit/phpunit: ^9.5
This package is not auto-updated.
Last update: 2024-09-16 20:44:40 UTC
README

Laravel Scanator
一个 Laravel 扩展包,提供检测数据库中敏感信息和模式的功能,通过允许开发者轻松地将数据库扫描功能集成到他们的应用程序中,并采取主动措施来保护敏感数据,从而帮助确保数据隐私和安全。
安装
使用 composer 安装此包
composer require yorcreative/laravel-scanator
发布资源。
php artisan vendor:publish --provider="YorCreative\Scanator\ScanatorServiceProvider" php artisan vendor:publish --provider="YorCreative\Scanator\ScrubberServiceProvider"
配置
调整 Scanator 配置文件
调整位于 /config/scanator.php
的配置文件以适应您的应用程序。
return [ 'sql' => [ 'ignore_tables' => [ 'failed_jobs', 'migrations' ], 'ignore_columns' => [ 'id', 'created_at', 'updated_at' ], 'ignore_types' => [ 'timestamp' ], 'select' => [ 'low_limit' => 3, 'high_limit' => 10 ], ] ];
调整 Scrubber 配置文件
调整位于 /config/scrubber.php
的 regex_loader
字段以适应您的应用程序。有关 Scrubber 配置文件的更多信息,请参阅源文档 此处。
return [ ... 'regex_loader' => ['*'], // Opt-in to specific regex classes OR include all with * wildcard. ... ];
用法
此包未附带实现。它作为工具提供,开发者可以根据应用程序的需求选择如何实现。
检测管理器
DetectionManager 类是 Laravel Scanator 扩展包的一个基本组件。它在扫描过程中管理和存储 检测。它提供了记录检测、检索检测列表和获取扫描开始时间的方法。
完整数据库扫描
此包提供分析并构建数据库模式的能力,然后扫描敏感信息,排除 Scanator 配置文件中的任何表、列或类型,最后返回 Detection Manager 类。
$detectionManager = Scanator::init(); $detections = $detectionManager->getDetections();
选择性数据库扫描
此包提供选择性扫描表的能力。
$detectionManager = new DetectionManager(); Scanator::analyze($detectionManager, 'table_name', ['columns', 'to', 'scan']); $detections = $detectionManager->getDetections();
定义可排除的表
此包的配置文件提供定义可排除表的功能,允许您在扫描过程中排除它们。
'ignore_tables' => [ 'failed_jobs', 'migrations' ],
定义可排除的列
同样,您可以在配置文件中定义可排除的列,以防止包扫描它们。
'ignore_columns' => [ 'id', 'created_at', 'updated_at' ],
定义可排除的数据类型
为了进一步细化扫描过程,您可以在配置文件中指定可排除的数据类型。在扫描时,包将忽略这些数据类型。
'ignore_types' => [ 'timestamp' ],
定义样本大小
为了更好地控制扫描过程,配置文件允许您定义从每个表提取的样本大小。
'select' => [ 'low_limit' => 3, 'high_limit' => 10 ],
Scrubber 文档
此包基于 scrubber 包提供的 RegexRepository。有关 scrubber 的完整文档,请参阅 此处。
Regex 类启用
您可以通过 scrubber 配置文件定义在应用程序启动时要加载哪些正则表达式类。默认情况下,此包附带通配符值。
Regex 集合 & 定义启用
要启用,请使用 RegexCollection 类的静态属性。
'regex_loader' => [ RegexCollection::$GOOGLE_API, RegexCollection::$AUTHORIZATION_BEARER, RegexCollection::$CREDIT_CARD_AMERICAN_EXPRESS, RegexCollection::$CREDIT_CARD_DISCOVER, RegexCollection::$CREDIT_CARD_VISA, RegexCollection::$JSON_WEB_TOKEN ],
创建自定义扩展类
Scrubber 包附带一个用于创建自定义扩展类的命令,并允许进一步优化 Scanator 的数据库扫描。
php artisan make:regex-class {name}
该命令将在 App\Scrubber\RegexCollection
中创建一个空类。Scrubber 包将从 App\Scrubber\RegexCollection
文件夹自动加载所有内容,并在 scrubber 配置文件中的 regex_loader
数组中使用通配符值。您需要为该类提供 正则表达式模式
和 可测试字符串
。
选择自定义扩展类
regex_loader
数组接收字符串,而不是对象。要选择特定的自定义扩展正则表达式类,请将类名定义为字符串。
例如,如果我有一个自定义扩展类如下
<?php namespace App\Scrubber\RegexCollection; use YorCreative\Scrubber\Interfaces\RegexCollectionInterface; class TestRegex implements RegexCollectionInterface { public function getPattern(): string { /** * @todo * @note return a regex pattern to detect a specific piece of sensitive data. */ return '(?<=basic) [a-zA-Z0-9=:\\+\/-]{5,100}'; } public function getTestableString(): string { /** * @todo * @note return a string that can be used to verify the regex pattern provided. */ return 'basic f9Iu+YwMiJEsQu/vBHlbUNZRkN/ihdB1sNTU'; } public function isSecret(): bool { return false; } }
regex_loader
数组应定义为如下
'regex_loader' => [ RegexCollection::$GOOGLE_API, RegexCollection::$AUTHORIZATION_BEARER, RegexCollection::$CREDIT_CARD_AMERICAN_EXPRESS, RegexCollection::$CREDIT_CARD_DISCOVER, RegexCollection::$CREDIT_CARD_VISA, RegexCollection::$JSON_WEB_TOKEN, 'TestRegex' ],
测试
composer test