【问题标题】:Detecting Hard Coded Passwords检测硬编码密码
【发布时间】:2016-03-22 09:08:22
【问题描述】:

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

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

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

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

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

感谢所有建议。

【问题讨论】:

  • 可能太宽泛了,但是一个很好的问题....它想成为一个通用的或者你的密码有一些模式(我的意思是,UPPERCASELOWERCASESYMBOLS 是强制性的? ?
  • @JordiCastilla 我想要一些可以跨不同代码库工作的东西。我实施的当前检查无论大小写都匹配。我一直在阅读并尝试使其更通用,以适应不同的编码风格。
  • 因此,如果它决定所有硬编码密码都是 String 类型,我认为您可以使用正则表达式“*”在代码库中搜索所有硬编码字符串,然后您可以从中过滤密码。
  • @Sabir_Khan 目前不仅仅是字符串类型,即使主要挑战是从那些硬编码的字符串中过滤密码。对此有何见解?
  • 但是,你怎么知道String secret = "apple"String myString = "k$%&crde46" 是不是密码?变量名不是个好主意,你只能通过字符串模式搜索

标签: java security passwords sonarqube hardcoded


【解决方案1】:

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

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

恕我直言,聘请某人进行(安全)代码审查比尝试自动执行代码审查更便宜。

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多