Рубрики

Зачем использовать массив char [] над строкой для хранения паролей в Java?

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

    // Java-программа для отображения предпочитаемых массивов char []
    // над строками для паролей в Java

    public class PasswordPreference

    {

       

        public static void main(String[] args) 

        {

       

            String strPwd = "password";

            char[] charPwd = new char[] {'p','a','s','s','w','o','r','d'};

              

            System.out.println("String password: " + strPwd );

            System.out.println("Character password: " + charPwd );

        }

    }

    Выход:

    String password: password
    Character password: [C@15db9742
    
  4. Рекомендация Java: в Java есть методы, такие как JPasswordField из javax.swing, так как метод public String getText (), который возвращает String, устарел из Java 2 и заменяется на public char [] getPassword (), который возвращает Char Array.

Эта статья предоставлена Каникой Тяги . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Рекомендуемые посты:

Зачем использовать массив char [] над строкой для хранения паролей в Java?

0.00 (0%) 0 votes