Мне нравится кодировать Java-карту строк в виде одной строки, закодированной в формате 64. Закодированная строка будет передана на удаленную конечную точку и может быть манипулирована не очень хорошим человеком. Таким образом, худшее, что должно произойти, - это неоправданный ключ, кортежи-значения, но они не должны оставлять в стороне никаких других угроз безопасности.
Пример:
Map<String,String> map = ...
String encoded = Base64.encode(map);
// somewhere else
Map<String,String> map = Base64.decode(encoded);
Да, должно быть Base64. Не так или или любой другой из них . Существует ли существующее облегченное решение (предпочтительнее Single Utils-Class)? Или я должен создать свой собственный?
Что-нибудь лучше, чем это?
// marshalling
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(map);
oos.close();
String encoded = new String(Base64.encodeBase64(baos.toByteArray()));
// unmarshalling
byte[] decoded = Base64.decodeBase64(encoded.getBytes());
ByteArrayInputStream bais = new ByteArrayInputStream(decoded);
ObjectInputStream ois = new ObjectInputStream(bais);
map = (Map<String,String>) ois.readObject();
ois.close();
Спасибо