SV.PASSWD.PLAIN

如果一个字符串可从文件存储器或网络追踪到将其用作密码的方法,便会出现此错误。

从 2023.2 版本开始,此检查器将支持 Jakarta EE。

漏洞与风险

如果存储器或网络未受外部加密保护,则能够访问它的任何人都将能看到密码的含义。

Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。

缓解与预防

密码应动态输入。如果无法动态输入,则应将密码存储为不可逆的摘要,如 md5。如果方法需要纯文本的密码,将加密密码存储在配置文件中。

示例 1

复制
    public static void main(String[] args) throws Exception {
         Properties info = new Properties();
         final FileInputStream st = new FileInputStream("config.ini");
         info.load(st);
         st.close();
         DriverManager.getConnection("jdbc:mysql://localhost:3307", info);
     }

针对第 18 行报告 SV.PASSWD.PLAIN:调用 getConnection 时使用的密码获取自 info。此密码以纯文本形式进行存储或传输,除非已应用外部加密(如 SSL)。

扩展

此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。