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