2015-12-16 156 views
5

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

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

但它是导致大量误报像在这种情况下(读取从配置文件密码)

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

我可以标记出一些子串状键,位置,路径,我可以跳过错误代,但除此之外,我想不出更好的方法。

所有的建议表示赞赏。

+0

也许是太宽泛,但一个很好的问题....它想成为一个普遍的或你的密码有一些模式(我的意思是'大写','小写','符号'强制性?? –

+0

@JordiCastilla我想要一些可能在不同代码基础上工作的东西,目前的检查我已经做了匹配而不考虑大小写我一直在阅读并试图使它更通用,以迎合不同的编码风格 –

+0

所以如果它决定所有的硬件编码的密码将是一个**字符串类型**,我认为你可以用正则表达式“*”搜索所有硬编码字符串的代码库,然后你可以过滤密码 –

回答

0

隐藏的后门的真实世界案例了解到,代码通常使用变量名称来表示目的更加模糊。

因此,为了达到万无一失,您需要做一个完整的静态分析,并在代码检查器中具有“智能”以了解代码并找到认证发生的位置,然后向后工作以验证没有隐藏达到此目的的方法。

恕我直言,聘请某人做(安全)代码审查比试图自动化这个更便宜。