如何修复 "Password management, empty password"?

How to fix "Password management, empty password"?

HP fortify document 警告我以下代码会有一些安全问题:

string storedPassword = "";
string temp;

if ((temp = ReadPassword(storedPassword)) != null) {
    storedPassword = temp;
}

if(Utils.VerifyPassword(storedPassword, userPassword))
    // Access protected resources
    ...
}

如果 readPassword() 由于数据库错误或其他问题未能检索存储的密码,则攻击者可以通过为 用户密码.

好的...我同意说明...但是如何解决问题?代码处理密码管理的最佳做法是什么?

您可以简单地使用 IsNullOrWhiteSpace 语句:

public bool VerifyPassword(string storedPassword, string userPassword)
{
    if(string.IsNullOrWhiteSpace(userPassword))
    {
        return false;
    }
}

在您拥有有效的密码值之前,不要初始化您的密码(在本例中为空字符串)。

string storedPassword;
//string storedPassword = null;
string temp;

if ((temp = ReadPassword(storedPassword)) != null) {
    storedPassword = temp;
}

if(Utils.VerifyPassword(storedPassword, userPassword))
    // Access protected resources
    ...
}