Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging yii2日志目标掩码_Logging_Yii2 - Fatal编程技术网

Logging yii2日志目标掩码

Logging yii2日志目标掩码,logging,yii2,Logging,Yii2,我正在使用Yii2框架,需要找到一种方法来保护日志文件中的敏感数据 考虑以下日志转储 $_POST = [ '_csrf' => 'VzVDNC03aXk9BAhOYEMPPzkDG2BvQwELDwZuV2VzUDUjTSJuRl4FCQ==' 'CreditCardForm' => [ 'card_number' => '4111111111111111' 'exp_month' => '02' 'exp_year' => '16'

我正在使用Yii2框架,需要找到一种方法来保护日志文件中的敏感数据

考虑以下日志转储

$_POST = [
'_csrf' => 'VzVDNC03aXk9BAhOYEMPPzkDG2BvQwELDwZuV2VzUDUjTSJuRl4FCQ=='
'CreditCardForm' => [
    'card_number' => '4111111111111111'
    'exp_month' => '02'
    'exp_year' => '16'
    'cardholder_name' => 'Jane Doe'
    'agreement' => '1'
]
]

我想在不接触框架文件的情况下,以可移植的方式修改\yii\log\Target.getContextMessage()的行为,以便屏蔽信用卡号的前12位数字

我目前的想法是在将值复制到进行处理的模型中之后,修改$u POST global


还有其他建议吗?

您可以选择使用配置文件将日志路由的配置更改为不包含POST,并更改
logVars
的内容。如果您根本不需要superglobals,您可以将其设置为
[]

例如:


另一种选择是覆盖您使用的
目标类,并在返回数据之前更新
getContextMessage()
函数以删除/模糊信用卡号。

在web/index.php中,我添加了以下内容

global $SAFE_POST;
if(is_array($_POST)) {
  $SAFE_POST = $_POST;
  array_walk_recursive($SAFE_POST,function(&$value,$key) {
    if($key == 'card_number' && is_string($value)) {
       if(strlen($value) <= 4)
         $value = str_repeat('X',strlen($value));
       else
         $value = str_repeat('X',strlen($value)-4).substr($value,-4);
    }
  });
}

我正在考虑将logVars中的POST替换为一个新的、屏蔽的POST global,我将在启动序列的早期创建它,可能是在web/index.php中
global $SAFE_POST;
if(is_array($_POST)) {
  $SAFE_POST = $_POST;
  array_walk_recursive($SAFE_POST,function(&$value,$key) {
    if($key == 'card_number' && is_string($value)) {
       if(strlen($value) <= 4)
         $value = str_repeat('X',strlen($value));
       else
         $value = str_repeat('X',strlen($value)-4).substr($value,-4);
    }
  });
}
log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning', 'info'],
                    'logVars' => ['_GET', 'SAFE_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER']    
                ],
            ],
        ],