pachico / magoo
此包已被废弃,不再维护。未建议替代包。
PHP库,用于隐藏(编辑)信用卡号、电子邮件等。
2.2.0
2018-05-09 07:56 UTC
Requires
- php: >=5.4.0
- psr/log: ^1.0
Requires (Dev)
- codacy/coverage: dev-master
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.7
README
Magoo 是一个PHP库,可以隐藏字符串中的敏感数据。内置的掩码使用正则表达式查找信用卡号、电子邮件等,并将它们隐藏,同时保持字符串的其他部分不变。例如,这可能有助于记录敏感的用户输入。
您还可以隐藏匹配您自己的正则表达式的字符串,或者注入掩码类,只要它们实现了简单的接口。
多维数组也可以被隐藏,并且可以使用它来隐藏符合 PSR-3 规范的日志库,例如 Monolog。
您可以通过 问题 页面请求实现掩码。
目录
安装
通过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. [] []
变更日志
请参阅变更日志获取更多关于最近更改的信息。
测试
$ composer test
贡献
安全
如果您发现任何安全问题,请通过电子邮件pachicodev@gmail.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。
帮助
请报告您可能发现的任何错误,并/或与您自己的面具进行合作。