我已经针对checkmarx工具运行我的java应用程序以获取安全漏洞,并且它经常给出一个问题 - 堆检查,对于我使用字符数组的密码字段。除了指出密码字段的声明之外,它没有给出任何解释。
private char[] passwordLength;
任何人都可以帮助我,我还能找到解决这个问题的方法吗?
堆检查是关于未加密存储在机器内存中的敏感信息,因此如果攻击者执行内存转储(例如,Heartbleed错误),则该信息会受到损害。因此,简单地保存该信息使其易受攻击。
可以通过以安全的方式存储这样的敏感信息来缓解这种情况,例如GuardedString对象而不是String或char数组,或加密它并擦除之后的原始短片。
有关更多信息,请参阅this CWE(描述C / C ++,但与Java相同)。
请参阅security.stackexchange.com上的this answer,了解“在字符串中覆盖值char [更安全吗”。
TLDR:你做不了多少。
PS:这是一个姐妹堆栈交换网站,我不是在这里复制答案(也是,它太长了)。如果主持人不同意,可以随意复制/粘贴它。