yupmin / magoo
PHP 库,用于隐藏(编辑)信用卡号、电子邮件等。
Requires
- php: ^7.4|^8.0|^8.1
- psr/log: ^1.0|^2.0
Requires (Dev)
- codacy/coverage: dev-master
- phpunit/phpunit: *
- squizlabs/php_codesniffer: ^2.7|^3.7
This package is auto-updated.
Last update: 2024-09-16 04:26:22 UTC
README
原始包 pachico/magoo 已弃用。此版本适用于php 7.4、8.0、8.1、8.2、8.3
Magoo 是一个 PHP 库,用于在字符串中隐藏敏感数据。内置的隐藏功能使用正则表达式查找信用卡号、电子邮件等,并只隐藏这些内容,保留字符串的其他部分。例如,这可以用于记录敏感的用户输入。
您还可以隐藏与您自己的正则表达式匹配的字符串,或者注入隐藏类,只要它们实现了一个简单的接口。
多维数组也可以被隐藏,并且可以使用它来隐藏符合 PSR-3 规范的日志库,如 Monolog。
您可以通过 issues 页面请求实现隐藏。
目录
安装
通过 Composer
composer require pachico/magoo
用法
通用
这是库的通用用法。
use Pachico\Magoo\Magoo; $magoo = new Magoo(); $magoo->pushCreditCardMask() ->pushEmailMask() ->pushByRegexMask('/(email)+/m'); $mySensitiveString = 'My email is roy@trenneman.com and my credit card is 6011792594656742'; echo $magoo->getMasked($mySensitiveString); // 'My ***** is ***@trenneman.com and my credit card is ************6742'
隐藏信用卡号
信用卡号隐藏接受自定义替换。
use Pachico\Magoo\Magoo; $magoo = new Magoo(); $magoo->pushCreditCardMask('·'); $mySensitiveString = 'This is my credit card number: 4111 1111 1111 1111.'; echo $magoo->getMasked($mySensitiveString); // This is my credit card number: ······1111.
隐藏电子邮件
电子邮件隐藏接受可选参数,用于替换本地和域部分。
use Pachico\Magoo\Magoo; $magoo = new Magoo(); $magoo->pushEmailMask('$', '*'); $mySensitiveString = 'My email is pachicodev@gmail.com but I need privacy.'; echo $magoo->getMasked($mySensitiveString); // My email is $$$$$$$$$$@********* but I need privacy.
通过正则表达式隐藏
正则表达式隐藏将匹配项替换为与每个匹配项一样长的字符串。它需要一个正则表达式,并接受自定义替换。
use Pachico\Magoo\Magoo; $magoo = new Magoo(); $magoo->pushByRegexMask('(\d+)', '_'); $mySensitiveString = 'My telephone number is 639.639.639. Call me at 19:00!'; echo $magoo->getMasked($mySensitiveString); // My telephone number is ___.___.___. Call me at __:__!
重置
您可能希望在应用程序中使用相同的 Magoo 实例,但每次不使用相同的隐藏。您可以通过使用 reset() 方法在任何时间重置所有隐藏。
use Pachico\Magoo\Magoo; $magoo = new Magoo(); $magoo->pushCreditCardMask()->pushByRegexMask('(\d+)', '_'); $mySensitiveString = 'My CC is 4111 1111 1111 1111 and my telephone number is 639.639.639.'; echo $magoo->getMasked($mySensitiveString); // My CC is ************____ and my telephone number is ___.___.___. $magoo->reset(); echo $magoo->getMasked($mySensitiveString); // My CC is 4111 1111 1111 1111 and my telephone number is 639.639.639.
自定义隐藏
此外,您还可以添加自己的隐藏,只要它实现了 Maskinterface。
use Pachico\Magoo\Magoo; class FooMask implements \Pachico\Magoo\Mask\MaskInterface { protected $replacement = '*'; public function __construct(array $params = []) { if (isset($params['replacement']) && is_string($params['replacement'])) { $this->replacement = $params['replacement']; } } public function mask($string) { return str_replace('foo', $this->replacement, $string); } } $magoo = new Magoo(); $customMask = new FooMask(['replacement' => 'bar']); $magoo->pushMask($customMask); $mySensitiveString = 'It is time to go to the foo.'; echo $magoo->getMasked($mySensitiveString); // It is time to go to the bar.
隐藏数组
Magoo 包括一个方便的方法来隐藏多维数组,这在例如日志记录上下文中可能很有用。
use Pachico\Magoo\Magoo; use Pachico\Magoo\MagooArray; $magoo =new Magoo(); $magoo->pushByRegexMask('(foo)', 'bar'); $magooArray = new MagooArray($magoo); $mySensitiveArray = [ 'It is time to go to the foo.', [ 'It is never too late to go the foo.' ], new DateTime() ]; $magooArray->getMasked($mySensitiveArray);
输出
Array ( [0] => It is time to go to the bar. [1] => Array ( [0] => It is never too late to go the bar. ) [2] => DateTime Object ( [date] => 2020-08-21 11:44:33.000000 [timezone_type] => 3 [timezone] => UTC ) )
##隐藏 PSR-3 日志记录器 您还可以将 Magoo 用作符合 PSR-3 规范的日志记录器的包装器。在这个例子中,我们使用了 Monolog。
use Pachico\Magoo\Magoo; use Pachico\Magoo\MagooLogger; use Monolog\Logger; use Monolog\Handler\ErrorLogHandler; $magoo = new Magoo(); $magoo->pushByRegexMask('(foo)', 'bar'); $logger = new Logger('app'); $handler = new ErrorLogHandler(); $logger->pushHandler($handler); $magooLogger = new MagooLogger($logger, $magoo); $mySensitiveString = 'It is time to go to the foo.'; $magooLogger->warning($mySensitiveString); // [2020-08-20 15:54:34] app.WARNING: It is time to go to the bar. [] []
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件发送至 pachicodev@gmail.com,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。
帮助
请报告您可能发现的任何错误,并/或合作开发您自己的隐藏。