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 个字符。
外部指导
安全培训
应用程序安全培训材料由 Secure Code Warrior 提供。