java - 检测硬编码密码

标签 java security passwords sonarqube hardcoded

我一直在尝试检测源代码文件中的硬编码密码。

目前我正在检查变量赋值和标识符与密码 pswd 匹配的子字符串的比较。

但它会导致很多误报,例如在这种情况下(从配置文件中读取密码)

String PASSWORD_KEY = "server.password";
String password = prop.getProperty(PASSWORD_KEY);

我可以标记出一些子字符串,例如键、位置、路径,我可以跳过这些子字符串的错误生成,但除此之外我想不出更好的方法。

感谢所有建议。

最佳答案

真实世界的隐藏后门案例表明,代码通常更加模糊,无法使用指示目的的变量名。

因此,为了做到万无一失,您需要进行完整的静态分析,并在代码检查器中拥有“智能”以理解代码并找到身份验证发生的位置,然后向后工作以验证没有隐藏的方法实现这一目标。

恕我直言,雇人做(安全)代码审查比尝试自动化要便宜。

关于java - 检测硬编码密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308489/

相关文章:

c# - 支持 JWT key 轮换的 Bearer Token Authentication 的 Owin 中间件

ruby - BCrypt 说很长,相似的密码是等价的 - 我的问题,gem 或密码学领域?

node.js - 如何隐藏nodemailer用于推送公共(public)github存储库的gmail密码?

java - 使用 netbeans 和 maven 创建 JApplet

java - 错误 : Projects containing version <unknown> deployment descriptors require XMI-format bindings or extensions files. ibm-web-bnd.xml

javascript - Mega 如何在不需要许可的情况下将文件保存到硬盘驱动器

android - 如何检测用户是否启用了密码或 PIN?

java - 如何让OSGI EventAdmin在多线程中处理事件

java - 将 java 类导入 JSP

asp.net - 我想通过代码将我的 FormsAuthentication cookie 设置为超时