使用xdebug时避免泄露用户名/密码

时间:2015-09-16 04:12:05

标签: php security xdebug

我设置xdebug进行错误跟踪,我在登录表单上看到了问题。只要用户尝试登录xdebug,就会使用username password引发堆栈跟踪。现在的问题是如何用占位符字符替换那些*,以避免记录用户名/密码。

这不是PRODUCTION SERVER

2 个答案:

答案 0 :(得分:1)

嗯,你真的打开了生产错误报告吗?这样一个勇敢的人:)

禁用它!生产应该记录错误,从不显示它们。

答案 1 :(得分:1)

这有点晚了,但我一直在寻找这个问题的答案而且还没找到。这就是我提出的问题。

使用setter(或构造函数)将凭据传递给auth模型,而不是直接将它们传递给任何可能有错误的函数:

class Auth
{
    protected
        $username=null,
        $password=null;
    ...
    public function setCredentials($username,$password)
    {
        $this->username=$username;
        $this->password=$password;
    }
    public function login()
    {
        $result=false;
        //credentials are not passed to this function
        //so if something goes wrong they won't end up
        //in the stack trace
        ...retrieve user record from database...
        $result=password_verify($this->password,$data['password_hash']));
        if($result)
        {
            ...success - finish logging user in...
        }
        return $result;
    }
    ...
}

setCredentials函数非常简单,其中没有任何内容会导致抛出异常。

登录功能不会将凭证作为参数,因此如果出现问题,您的密码将不会在堆栈跟踪中结束(而不是Auth :: login(' thisisme&#) 39;,' thisismypassword')在堆栈跟踪中,你会看到Auth :: login())

据我所知,password_verify函数不会抛出异常,但如果你是偏执狂,你可以把它包装在try / catch块中:

try
{
    $result=password_verify($this->password,$data['password_hash']));
}
catch(Exception $ex)
{
    error_log(get_class($this).'::'.__FUNCTION__.': password_verify() failed.');
}

应使用password_hash()

设置密码哈希

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/function.password-verify.php