В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Я предполагаю, что Вы хотите скрыть пароли от случайных наблюдателей. Если они были злыми, стальными пятнистыми наблюдателями с доступом ко всему исходному коду на одной из машин, которая соединяется, то они могут получить пароль с небольшим количеством инженерного анализа.
Помнят, что Вы не должны использовать ту же защиту для каждого различного клиента. Некоторые steps:-
Мы также рассмотрели наличие подсказки приложения для пароля на запуске, но не реализовали это, поскольку это походит на боль, и Ваш операционный штат тогда должен знать пароль. Это, вероятно, менее безопасно.
Давайте примем следующий общий сценарий:
Вы используете ту же кодовую базу для всех сред, и Ваша кодовая база имеет пароли базы данных для каждой среды.
персоналу (системные администраторы, менеджеры конфигурации), которые имеют доступ к Вашему серверу производственного приложения, разрешают знать производственные пароли базы данных и никого больше.
Вы не хотите, чтобы любой с доступом к исходному коду знал, каковы производственные пароли.
В сценарии как это, можно зашифровать и сохранить производственные пароли в файлах свойств что приложение. В рамках приложения можно включать класс, который читает пароли из файла свойств и дешифрует его прежде, чем передать его драйверу базы данных. Однако ключ и алгоритм, используемый для дешифрования пароля, не являются частью исходного кода, а скорее передали приложению как системное свойство во времени выполнения. Это разъединяет знание ключа из исходного кода приложения, и любой с доступом только к исходному коду приложения больше не будет в состоянии дешифровать пароль, потому что у них нет доступа к среде выполнения приложения (сервер приложений).
, Если Вы используете Java, смотрят на это для более конкретного примера. Пример использует Spring и Jasypt. Я уверен, что некоторая вещь как это может экстраполироваться к другим средам как.Net
На моем старом рабочем месте мы раньше имели систему, посредством чего все пароли были зашифрованы (использующий Тройной DES или независимо от того, что мы использовали в то время). Пароли часто хранились в файлах свойств (это было в системе Java).
, Когда пароль должен был быть изменен, мы могли просто использовать"! простой текст" как значение, и затем наш код загрузил бы его, зашифровал бы его и сохранил бы зашифрованное значение назад в файле свойств.
Это означало, что было возможно изменить пароль, не зная то, что исходное значение было - не уверено, если это - вид вещи, Вы просили!
Это кажется, что нет никакого легкого ответа (из-за различных типов приложений, которые соединяются)... действительно, единственной проблемой, которую я вижу, являются Приложения Java, которые, кажется, соединяются непосредственно с Вашей базой данных. Это корректно?
Если так, вот то, что можно сделать:
1) Изменение любые клиентские приложения, которые соединяются непосредственно с DB для прохождения через сервиса. (Если они имеют для соединения непосредственно, затем, по крайней мере, дайте им первый шаг для "получения пароля" от сервиса, тогда они могут соединиться непосредственно).
2) Хранилище пароли в web.config файле (если Вы приняли решение сделать.Net веб-сервисы), и затем шифруют раздел "строк подключения" файла.
Не используйте пароли, сервер к аутентификации сервера может обычно выполняться при помощи файла ключей или клиентского сертификата или некоторого другого пути кроме пароля.
Для материала Java, если Вы используете сервер приложений, видят, можно ли определить источник данных, и приложения могут достигнуть источник данных с помощью JNDI. Тот путь, управляя источником данных (включая детали соединения) обрабатывается сервером приложений, и Ваш код приложения должен сделать, просят источник данных.
Аутентификация NTLM или основанный на LDAP (Active Directory) аутентификация должна быть доступна Вам с небольшим количеством усилия. Это позволило бы Вам использовать свою "аутентификацию Windows" через приложения.
Это может означать определенную миграцию для Вашего операционного штата, но SSO для ряда приложений хорош.
Вы могли использовать обратимый алгоритм шифрования, например, Шифр для хранения паролей как временной меры. Должно быть много свободных библиотек, которыми можно пользоваться для встраивания этого во все программы, для которых нужен этот доступ.
страница Bruce Schneier на Шифр
статья Wikipedia о Шифр
Использование шифрования - не лучшая идея. Если кто-то скомпрометирует ключ, он сможет его расшифровать. Используйте хеш-алгоритм с солью для хранения паролей. Алгоритмы хеширования - это односторонний способ, поэтому он необратим. Но они уязвимы для атак по словарю, поэтому используйте соль (объединение простого текста с чем-то длинным и подробным, чем хеширование). Он также защищает базу данных от внутренних атак.
Да, я должен согласиться с возможностью хранения (солёных) хэшей. Я бы порекомендовал (соленый) SHA256-хеш пароля, хранящегося в базе данных. Также не забудьте обеспечить соблюдение правил безопасного пароля.