我看到的每个示例都说要使用强密码,但是他们只是在源代码中添加了密码。在我看来,这似乎不太正确。
是否可以作为当前帐户向密钥库进行身份验证,因此不涉及密码?
如果不可能,我有一个要求,就是不要将密码存储在源代码中,这是完全可以接受的,但是似乎在某些时候密码需要成为方程式的一部分,有人可以指出我最安全的方式来进行加密吗?处理这个(事情?
我很想在构建过程中添加密码,但是然后我在构建服务器上有了一个明文密码,这对我来说几乎是相同的。
首先,一般规则是:如果您发布的软件本身能够解锁某些“安全存储”(因此,无需涉及您控制下的服务器或您控制下的其他硬件)…
是不可能的向运行它的计算机的所有者隐藏此信息 。
示例:Web浏览器往往具有提供存储网站密码的功能。这些密码存储在文件中,并且使用正确的工具,您可以打开这些文件,并将密码简单地视为一天。无法通过更多软件或更多加密算法来解决此问题。唯一的解决方案是使软件无法解锁该数据存储,例如,要求用户每次想要输入时都输入主密码,或者在硬件中放入某种安全的区域并由其负责加密
Java通常没有合适的库来与此类硬件进行交互(Apple的T2是对此概念的非常高级的理解; TPM芯片是一种预算选择)。
因此,一旦您对此感到满意,您仍然可以继续:好的,我不想在源代码中添加身份验证密钥;为了建立可从源头分配的产品,建造者将必须提供它。要做到这一点:
(假设Maven风格的项目结构):
src/main/resources/com/yourcompany/yourproject/keys/KeyFile.txt
,然后将.gitignore
文件更新到其中以忽略它/src/main/resources/com/yourcompany/yourproject/keys/KeyFile.txt
。src/main/java/com/yourcompany/yourproject/keys/ProjectKey.java
静态方法中检索密钥。它看起来像这样:public final class ProjectKey {
/* prevent instantiation */ private ProjectKey(){}
private static final String PROJECT_KEY = loadKey();
public static String getKey () {
if (PROJECT_KEY != null) return PROJECT_KEY;
throw new IllegalStateException(
"Key file not present; find somebody with the file and place in: " +
"src/main/resources/java/com/yourcompany/yourproject/keys/KeyFile.txt");
}
private static String loadKey() {
InputStream in = ProjectKey.class.getResourceAsStream("KeyFile.txt");
try {
return in == null ? null : new Scanner(in, "UTF-8").next();
} finally {
if (in != null) in.close();
}
}
}
在您的项目中创建一个名为“ keys”或诸如此类的目录。在根目录的.gitignore文件中,放置该行/keys
以确保这些内容不会进入源代码管理。
You’d have to mess around with some build tool plugins if you want builds to
fail if the file is missing. Also, you’d have to update the scanner’s
delimiter if the ‘key’ contains any whitespace (I’m using scanner here as the
fastest way to turn an inputstream into a complete string; if you have for
example Guava, it has better calls to do that, and you should use those).
我有一个Java Spring Boot应用程序(war),它是容器化的,运行在Microsoft Azure的Kubernetes上。 最近我们将所有的密码都移到了Azure Key Vault中以使其安全,但现在问题出现了,在哪里存储Azure Key Vault本身的密码(服务主体密钥)? 此外,密钥存储库凭据(服务主体)是特定于DEV、UAT和PROD环境的环境。 我想过加密密码,但问题是
问题内容: 我正在尝试将凭据从一个Jenkins迁移到另一个Jenkins,但是用户名/密码散列在$ {JENKINS_HOME} /credentials.xml中 我找到了这个答案,但是问题是它并没有说明有人可以在哪里找到加密密钥才能成功迁移凭据。 任何帮助是极大的赞赏! 编辑 :更多信息..我的${JENKINS_HOME}在一个单独的卷上,我将其分离并重新附加到新的VM上,但仍然无法使用。
它是否将其存储在缓存中?我有一个应用程序,但应用程序中没有任何地方。属性是提到的db详细信息。我可以通过邮递员存储数据和查询它。
问题内容: 因此,我有了这种elasticsearch安装,可以在用logstash插入数据时使用kibana可视化它们。 conf文件中的所有内容均已注释,因此它使用的是相对于elasticsearch文件夹的默认文件夹。 这怎么可能? 但是,此命令将删除数据: 谢谢。 ps:忘了说我在窗户上 问题答案: 如果您在Linux上安装了ES,则默认数据文件夹位于(CentOS)或(Ubuntu)
我无法让这个C#解决方案(点击下载-666MB或在GitHub上浏览此处)编译: 我得到的错误是 此项目引用了此计算机上缺少的NuGet包。使用NuGet包还原来下载它们。如需详细资讯,请参阅http://go.microsoft.com/fwlink/?LinkID=322105.遗失的档案是..\ packages \ accord . 3 . 8 . 0 \ build \ accord .
问题内容: 被存储在客户端或服务器上的变量? 问题答案: 变量存储的位置由PHP的配置确定。通常这是在Linux / Unix系统上。如果无法100%确定,请使用此功能查看您的特定设置,方法是在您域的中创建具有以下内容的文件: