问题描述
硬编码密码,是指在程序中采用硬编码方式处理密码。
这种处理方式不易于程序维护,在程序投入使用后,无法在不手动修改程序或以其他方式修补软件的情况下更改或禁用它,一旦密码泄露,知道该密码的任何人都可以访问该程序。
另一方面,硬编码密码意味着如果攻击者能够访问应用程序的字节码,利用一些反编译工具,也可以轻易获得密码。
Bad Code
String userName = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url,userName, password);
解决方案
1、将密码存储在代码之外的高度保护的加密配置文件或数据库中,以防止所有外部人员(包括同一系统上的其他本地用户)访问。
2、以密文的形式保存密码,可以通过外部资源文件或应用进行处理。
参考资料
CWE – https://cwe.mitre.org/data/definitions/259.html