Wiemy już o tej sugestii/praktyce użycia char[]
zamiast String
dla wrażliwych danych. Istnieje wiele powodów. Jednym z nich jest, aby oczyścić wrażliwą prawo danych po nie są one już potrzebne: Czułe dane Java: char [] vs String? O co chodzi?
char[] passwd = passwordProvider.getKeyStorePassword();
KeyStore keystore = KeyStore.getInstance("JKS");
// TODO: Create the input stream;
keystore.load(inputstream, passwd);
System.arraycopy(new char[passwd.length], 0, passwd, 0, passwd.length);
// Please continue...
Teraz pytanie: czy (tj użyciu char[]
) sensu (szczególnie punkt wyżej), gdy dane wrażliwe przychodzi pierwotnie jako wartość String
? na przykład:
char[] passwd = passwordProvider.getKeyStorePassword().toCharArray();
KeyStore keystore = KeyStore.getInstance("JKS");
// TODO: using the passwd, load the keystore;
System.arraycopy(new char[passwd.length], 0, passwd, 0, passwd.length);
// Please continue...
Z góry dziękuję.
UPDATE2: Przeformułuję pytanie: w tym konkretnym kontekście (zapomnij o zmianach w przyszłości lub cokolwiek innego), czy wiersz "czyszczenie zawartości tablicy znaków" przynosi jakieś korzyści?
UPDATE1: nie jest to duplikacja Why is char[] preferred over String for passwords? Wiem, co to za historia. Pytam w tym konkretnym kontekście, czy to wciąż ma sens?
Prawdopodobny duplikat [Dlaczego char \ [\] preferowane przez String dla haseł?] (Http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string- for-passwords) – Nilesh
Myślę, że to ma jakiś sens. Lepiej mieć więcej osłon bezpieczeństwa. Zapewni to również, że jeśli kiedykolwiek zmienisz dostawcę haseł, nie musisz zmieniać kodu. – yeputons
Masz rację. Ale chciałem się dowiedzieć, czy ma to sens w tym konkretnym kontekście, na który odpowiedź brzmi "nie", niewiele. – Rad