密码作为参数显示在堆栈跟踪中

Get*_*etz 6 php stack-trace

我们记录代码中发生的所有异常,并将堆栈跟踪关联起来.

问题来自这个功能:

public function Authenticate($user, $password)
    //Authenticate the user
}
Run Code Online (Sandbox Code Playgroud)

当此函数抛出异常时,堆栈跟踪包含使用的参数:用户密码以纯文本显示.

我该怎么处理?我应该重写Authenticate功能只接受加密密码吗?我可以禁止在堆栈跟踪中显示此特定参数吗?

欢迎任何想法.

编辑

我使用getTraceAsString函数来记录跟踪.

meh*_*kin 2

您可以使用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)

  • 你的回答确实对我有帮助,但这个函数只记录最后一个函数。我选择使用这个:http://php.net/manual/fr/exception.gettraceasstring.php#114980 (2认同)