我正在维护一个内置于Yii2的应用程序,我想使用Yii::warning()来写日志消息。这很好,除非我在用户登录序列中记录事件。
用户名和密码作为POST变量发送。这些是不应该在日志文件中捕获的敏感信息。
$errorno = ldap_errno($this->link);
$errorstr = ldap_err2str($errorno);
Yii::warning("LDAP error: $errorno: $errorstr");
上面的代码导致出现一个日志警告,其中包含我的ldap错误消息,但该警告包含一个完整的堆栈跟踪和POST变量。
即使仅在LDAP连接出现问题时才写入警告,它也可以包含当时任何用户的凭据,从服务器管理员到CEO。
我如何在Yii中记录与验证相关的事件的警告,而不获取完整的堆栈跟踪和POST字段的转储?
2条答案
按热度按时间dgjrabp21#
您可以配置哪些PHP超全局变量被导出到每个日志目标的日志中。在您的配置文件中,例如:
上面的示例显示了省略
logVars
属性时的等效默认设置。ldxq2e6h2#
为了避免日志中的敏感数据泄漏,您可以简单地屏蔽日志文件中的任何变量,并且对于任何类型的级别,而不仅仅是警告。
现在练习如何确定和设置maskVars。假设您在日志中看到如下内容:
屏蔽邮箱和密码只需在maskVars配置中添加
'_POST.LoginForm.email'
和'_POST.LoginForm.email'
即可。PS:通过这种方式,你可以屏蔽任何敏感的全局变量: