CXX.SV.PWD.PLAIN.LENGTH.ZERO

尝试设置字符长度为 0 的密码

应用程序尝试设置字符长度为 0 的纯文本密码时,Klocwork 会报告 CXX.SV.PWD.PLAIN.LENGTH.ZERO 缺陷。

漏洞与风险

在身份验证过程中,如果用户提供的密码字符长度为 0,则恶意行为者将能够很轻松地对应用程序或系统发起攻击。

缓解与预防

使用字符长度不小于 15 的强密码。

漏洞代码示例

复制
#include <QtSql/QSqlDatabase>
void Database::connect(Ui::MainWindow *ui){
    /* Set connections */
    this->qSqlDatabase.setUserName("J0a1m8");
    this->qSqlDatabase.setPassword("");
}

Klocwork 在第 5 行报告 CXX.SV.PWD.PLAIN.LENGTH.ZERO 缺陷,指出“尝试设置字符长度为 0 的密码,请考虑加长密码长度至 15 个字符或以上。”在 Database::connect 方法中,包含 0 个字符的字符串在身份验证期间直接传递到 setPassword API。

修正代码示例

复制
#include <QtSql/QSqlDatabase>
void Database::connect(Ui::MainWindow *ui){
    /* Set connections */
    QString pwd = "J0a1m8welCome6469";
    this->qSqlDatabase.setUserName("mojito");
    this->qSqlDatabase.setPassword(pwd);
}

Klocwork 不再报告 CXX.SV.PWD.PLAIN.LENGTH.ZERO 缺陷,因为提供给 setPassword API 的密码长度至少为 15 个字符。