Каков наилучший способ безопасного сохранения пользовательских настроек в приложении java desktop? Например, если я хочу сохранить настройки учетной записи Ftp, что это лучший способ сделать это?
Спасибо
Каков наилучший способ безопасного сохранения пользовательских настроек в приложении java desktop? Например, если я хочу сохранить настройки учетной записи Ftp, что это лучший способ сделать это?
Спасибо
API настроек - отличный способ сохранить пользовательские и системные настройки. Если вы хотите хранить пароли, вам придется зашифровать их. Вот хорошая статья, которая поможет вам начать работу.
Я обычно храню в каталоге пользовательских данных, с подкаталогами имени приложения, за которым следует версия приложения.
public static String getUserDataDirectory() {
return System.getProperty("user.home") + File.separator + ".jstock" + File.separator + getApplicationVersionString() + File.separator;
}
Я использовал следующий код в течение 3 лет. Этот метод работает достаточно хорошо в Windows, Linux или Mac.
Обратите внимание, что в Windows никогда не сохраняйте его в Program Files
, поскольку UAC в Windows Vista или новее может дать вам массу проблем.
Помните, чтобы поставить точку перед вашим именем приложения, чтобы она стала скрытой папкой в Linux.
Хорошая вещь, используя эту методологию, заключается в том, что вы не ограничиваете себя только хранением только примитивного значения. Вместо этого вы можете сохранить все состояние объекта на диске с помощью xstream
Например:
public static boolean toXML(Object object, File file) {
XStream xStream = new XStream();
OutputStream outputStream = null;
Writer writer = null;
try {
outputStream = new FileOutputStream(file);
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
xStream.toXML(object, writer);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
close(writer);
close(outputStream);
}
return true;
}
Безопасное хранение одного пароля достаточно сложно. Предположим, вы шифруете пароль с помощью секретного ключа. Затем, когда ваше приложение начинается снова, ему нужен секретный ключ, откуда он это получает?
Если он спрашивает пользователя, он может просто ввести пароль ftp, который вы сохранили в первую очередь. Если он где-то читает секретный ключ, вам нужно обеспечить секретный ключ, и мы вернемся туда, где мы начали.
Если вы сохраняете несколько паролей, то запрашивать у пользователя один пароль для какого-либо "хранилища" может быть намного более дружелюбно, но затем вы сталкиваетесь со всеми проблемами, связанными с истекшими паролями.
Есть продукты, доступные для решения этой проблемы, если у вас есть серьезная потребность, вам, вероятно, нужно их исследовать.