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 个字符。