【问题标题】:How to clear environment variable suggested by Jasypt Java library?如何清除 Jasypt Java 库建议的环境变量?
【发布时间】:2015-10-01 01:13:31
【问题描述】:

Jasypt 建议将主密钥传递给 Java 应用程序的一种方法是通过 environment variable

在该网页中,jasypt 建议:

这将允许用户,例如,在环境变量中设置加密密码,启动应用程序或应用程序服务器,让 jasypt 加密器对象初始化,然后取消设置变量(从而隐藏它)

如何完成“取消设置变量”部分?

【问题讨论】:

  • 你不能。建议你把密码放在一个文件里,然后读取文件。
  • 感谢您的评论。那么,基本上 Jasypt 提供了一个不安全的 Spring 集成?似乎 Jasypt-Spring 应该提供基于文件的方法,除非我遗漏了什么。

标签: java process environment-variables jasypt


【解决方案1】:

我最终遵循了@Andreas 的建议,即从文件中读取主密钥(理想情况下应该具有限制性权限。)

为了保持Jasypt Spring集成的优势,我做了一个自定义的“FilePBEConfig”:

package com.my.product;

import org.jasypt.encryption.pbe.config.SimplePBEConfig;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FilePBEConfig extends SimplePBEConfig {
    private String passwordFilePath = null;

    public FilePBEConfig() {
        super();
    }

    public String getPasswordFilePath() {
        return passwordFilePath;
    }

    public void setPasswordFilePath(final String passwordFilePath) throws IOException {
        this.passwordFilePath = passwordFilePath;
        if (passwordFilePath == null) {
            super.setPassword(null);
        } else {
            try (BufferedReader br = new BufferedReader(new FileReader(passwordFilePath))) {
                super.setPassword(br.readLine());
            }
        }
    }
}

然后您可以按照Jasypt Spring Integration 的建议在您的 Spring xml 文件中使用它:

 <bean id="fileConfiguration"
     class="com.my.product.FilePBEConfig">
   <property name="algorithm" value="PBEWithMD5AndDES" />
   <property name="passwordFilePath" value="/path/to/masterfile" />
 </bean>

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2012-12-13
    • 2017-08-31
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多