SV.PASSWD.HC.MINLEN
最小字符长度为 15 的硬编码密码
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
当接受密码的方法或执行加密的方法使用硬编码字符串时,Klocwork 会报告 SV.PASSWD.HC.MINLEN 缺陷。
漏洞与风险
源代码不适用于存储密码,应该尽可能避免使用。但是,如果开发人员需要存储硬编码密码,则可以增加密码的复杂程度,以此降低密码泄露的风险。例如,可以设置密码的最小字符长度,比如 15,这样可以降低攻击者成功破解的可能性。
缓解与预防
使用较长的密码,因为每增加一个字符都会使破解密码所需的组合数量呈指数倍增加,包括但不限于暴力攻击。
漏洞代码示例
复制
public static void main(String[] args) throws SQLException {
Properties info = new Properties();
info.setProperty("user", "admin");
info.setProperty("password", "0102030405");
DriverManager.getConnection("jdbc:mysql://localhost:8800", info);
}
Klocwork 在第 4 行报告了 SV.PASSWD.HC.MINLEN 缺陷,指出“字符串 0102030405 用作密码:密码少于 15 个字符不利于保障安全性”。
修正代码示例
复制
public static void main(String[] args) throws SQLException {
Properties info = new Properties();
info.setProperty("user", "admin");
info.setProperty("password", "0102030405060708");
DriverManager.getConnection("jdbc:mysql://localhost:8800", info);
}
Klocwork 不再报告缺陷,因为密码的长度为 16 个字符。