CXX.SV.PWD.PLAIN.LENGTH

尝试设置字符长度小于 15 的密码

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

漏洞与风险

在身份验证过程中,如果用户提供的密码字符长度小于 15,则恶意行为者可以通过暴力破解攻击截获密码数据并推测密码。

缓解与预防

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

漏洞代码示例

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

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

修正代码示例

复制
#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 缺陷,因为提供给 setPassword API 的密码长度至少为 15 个字符。