我们记录代码中发生的所有异常,并将堆栈跟踪关联起来.
问题来自这个功能:
public function Authenticate($user, $password)
//Authenticate the user
}
Run Code Online (Sandbox Code Playgroud)
当此函数抛出异常时,堆栈跟踪包含使用的参数:用户密码以纯文本显示.
我该怎么处理?我应该重写Authenticate功能只接受加密密码吗?我可以禁止在堆栈跟踪中显示此特定参数吗?
欢迎任何想法.
编辑
我使用getTraceAsString函数来记录跟踪.
您可以使用Exception::getTrace()方法来收集信息,并编写您自己的自定义getTraceAsString()
,不包括参数。
请参阅Exception::getTrace() 文档上的评论中的示例。
function MakePrettyException(Exception $e) {
$trace = $e->getTrace();
$result = 'Exception: "';
$result .= $e->getMessage();
$result .= '" @ ';
if($trace[0]['class'] != '') {
$result .= $trace[0]['class'];
$result .= '->';
}
$result .= $trace[0]['function'];
$result .= '();<br />';
return $result;
}
Run Code Online (Sandbox Code Playgroud)