Случайный скрипт запускается при активации virtualenv

Это все причины, нужно выбрать char [] array вместо String для пароля.

1. Поскольку Строки неизменны в Java, если вы храните пароль как обычный текст, он будет доступен в памяти до тех пор, пока сборщик мусора не очистит его, и поскольку String используется в String-пуле для повторного использования, существует довольно высокая вероятность того, что он останется в памяти надолго, которые представляют угрозу безопасности. Поскольку любой, у кого есть доступ к дампу памяти, может найти пароль в открытом тексте, и это еще одна причина, по которой вы всегда должны использовать зашифрованный пароль, чем обычный текст. Поскольку строки являются неизменными, невозможно изменить содержимое строк, потому что любое изменение приведет к созданию новой строки, а если вы char [], вы все равно можете установить весь его элемент как пустой или нулевой. Таким образом, хранение пароля в массиве символов явно снижает риск безопасности при краже пароля.

2. Сама Java рекомендует использовать метод getPassword () JPasswordField, который возвращает метод char [] и устаревший метод getText (), который возвращает пароль в открытом тексте с указанием причины безопасности. Хорошо следить за советом команды Java и придерживаться стандарта, а не идти против него.

3. С String всегда существует риск печати обычного текста в файле журнала или консоли, но если вы используете Array, вы не будете печатать содержимое массива, а его местоположение памяти будет распечатано. хотя и не настоящая причина, но все еще имеет смысл.

    String strPassword="Unknown";
    char[] charPassword= new char[]{'U','n','k','w','o','n'};
    System.out.println("String password: " + strPassword);
    System.out.println("Character password: " + charPassword);

    String password: Unknown
    Character password: [C@110b053

Ссылка из: http://javarevisited.blogspot.com/2012/03/why-character-array-is-better- than.html Надеюсь, это поможет.

0
задан shreyas1701 27 March 2019 в 00:49
поделиться