我有一个install4j安装程序,它有一个自定义屏幕,提示用户安装软件以提供用户名/密码。我知道安装程序文本框将值存储到install4j变量,这些变量持久保存到resource.varfile。什么是存储密码的最佳方式?
我们的情况是IT管理员将安装该软件,但实际用户不应该能够查看此密码。
感谢
答案 0 :(得分:2)
我打开“将编码值写入响应文件”选项,将编码值写入response.varfile。这种编码与Base64非常相似,但是我花了一些时间来尝试解码一个值并没有找到任何常见的做法,但想出了一些手动工作序列:
String encoded = appProps.password;
byte[] data = Base64.decode(encoded);
for (int i = 0; i<data.length; i++) {
data[i] = ((byte) (Math.abs(data[i])- 1)) ;
}
String decoded = new String(data);
它已经过测试和工作,但我无法解释它并保证它将来会有效。 页面page表示存在另一种基于保存到java prefs的方法,但它不是存储密码的安全方法。检索密码字段值的最佳做法是什么?
答案 1 :(得分:1)
出于安全原因,“password”表单组件不会将其值写入响应文件。如果选择表单组件的“将编码值写入响应文件”属性,则会将编码值写入响应文件。这根本不安全,但会阻止临时用户在响应文件中看到纯文本密码。