有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安全性通过Java中的内存转储减少凭据泄漏

我们都知道Java中的密码/凭证应存储为字符数组。它的缓解,而不是保护

我总是不使用不可变对象来保存凭证,但不久或稍后,我需要将其传递给某个需要字符串的类(来自我们使用的所有第三个库)。难道所有的努力都没有了吗? 例如:如果我想设置授权标题,标题值按组织存储为字符串。阿帕奇。http。消息BasicHeader类。 另一个例子(可能不是很好):我使用一个处理密码(存储密码或其他东西)的服务。它要求他们在POST请求中作为主体。我创建了HttpPost,并将StringEntity添加为body。它已经存储为字符串,可以再次转储

您是否设法使您的凭据相对安全,不受内存转储的影响

谢谢


共 (1) 个答案

  1. # 1 楼答案

    在联系了该领域的一些安全专家后,我得到了以下答案:

    1. 在Java中将凭证存储为char[]是第二层防御措施。第一个是不允许他们进行内存转储
    2. 如果通过了第一级,我们可以减少他们在内存中找到的凭据数量
    3. 如今,不使用第三方库几乎是不可能的。然而,在我的所有示例中,第三方库都在短时间内引用了我的密码。他们将其存储为字符串的事实并不意味着我们不应该正确地存储它。我们的目标必须是不要将凭证存储为字符串,尤其是在缓存中或其他对该对象的引用被保留很长时间的地方