Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
2 / 2 / 0
Регистрация: 04.01.2019
Сообщений: 27

Как не хранить логин и пароль в коде в открытом виде?

25.09.2019, 15:15. Показов 14579. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Не могу сразу сориентироваться, очень много разной информации.
Попробую сформулировать свою конкретную "боль". Есть класс, в котором есть методы для подключения к конкретной БД и возврате нужного значения.
Пользователь уже создан во всех БД с одинаковыми логином и паролем, например test/qwerty
вот обрезанный фрагмент:
Java
1
2
3
4
5
6
7
8
9
...
    String url = "jdbc:mysql://192.168.0.3:3306/db_name";
    String userDB = "test";
    String pswDB = "qwerty";
    Connection connection = null;    
 
try {
    connection = DriverManager.getConnection(url, userDB, pswDB);
....
Всё отлично работает.
Вопрос: как правильно реализовать хранение логина/пароля при такой реализации? Интересует конкретный пример или толковое описание.
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2019, 15:15
Ответы с готовыми решениями:

Авторизация пользователя. Как хранить логин и пароль
Всем добрый день! Наконец-то добралась до авторизации пользователя. Отсюда вопрос: Где и как хранить логины и пароли? хочется в файле...

Где хранить логин и пароль пользователя
Где тру программисты хранят логины и пароли авторизованных пользователей - в куках или сессиях?

mssql + Android логин пароль где хранить?
есть сайт (интернет магазин ASP + MSSQL) поднят на хостинге у провайдера, приложение должно брать инфу о товарах с сайта, есть логин...

25
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.09.2019, 15:22
в пропертях или в енвайронменте
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.09.2019, 15:34
KMA7, чем мешает что пароль записан в коде?
0
 Аватар для Aviz__
2745 / 2054 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
25.09.2019, 16:23
KMA7, хранить в коде уже зашифрованную строку))
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.09.2019, 16:38
Цитата Сообщение от Aviz__ Посмотреть сообщение
уже зашифрованную строк
и пароль, чтобы расшифровывать?
0
 Аватар для Aviz__
2745 / 2054 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
25.09.2019, 16:40
Цитата Сообщение от xoraxax Посмотреть сообщение
чтобы расшифровывать?
как ты догадался?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
25.09.2019, 21:00
Мне мнавится идея на счет проперти, хотя тоже есть минусы.
Зачем вообще хранить пароль? Можно просто запрашивать у пользователя.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
25.09.2019, 22:24
Цитата Сообщение от xoraxax Посмотреть сообщение
в пропертях
И он сразу перестанет быть открытым? =)
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.09.2019, 22:33
Где хранить пароли и как с ними работать зависит от конечной цели. Для каких-то целей можно в коде хранить, для других в пропертях, в некоторых случаях лучше хранить пароль как char[] а не как String (т.к строки немутабельные объекты и следовательно пароль будет доступен для дампа памяти пока его не соберет GC).
Так же помнится был какой-то специальный класс javax.security вроде для паролей, но я хз как он работает с разными фреймворками.
Вобщем вопрос в отрыве от контекста не имеет смысла.
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
25.09.2019, 22:39
KEKCoGEN, javax.security вроде как отвечает именно за разрешения, предоставляемые программе, а с паролями никаких дел не имеет
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
25.09.2019, 23:02
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
в некоторых случаях лучше хранить пароль как char[] а не как String (т.к строки немутабельные объекты и следовательно пароль будет доступен для дампа памяти пока его не соберет GC).
В каких случаях? И что мешает сдампить память с char[]?

Добавлено через 1 минуту
Цитата Сообщение от ViktorFX Посмотреть сообщение
Зачем вообще хранить пароль? Можно просто запрашивать у пользователя.
This.[/thread]
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.09.2019, 09:28
Цитата Сообщение от korvin_ Посмотреть сообщение
This.
ага...пароль от БД сервера запрашивать каждый раз на старте =)))

Добавлено через 49 секунд
Цитата Сообщение от korvin_ Посмотреть сообщение
В каких случаях? И что мешает сдампить память с char[]?
массив можно перезаписать сразу же после использования. String будет оставаться дольше.
0
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 407
Регистрация: 11.08.2017
Сообщений: 4,357
Записей в блоге: 2
26.09.2019, 10:58
А чем не прямое хранение логина/пароля спасет от той же декомпиляции и вытаскивания данных из кода? Если его из кода не вытащить или памяти, то можно используя например java agent перехватить запрос на сервер и вытащить оттуда.
0
2 / 2 / 0
Регистрация: 04.01.2019
Сообщений: 27
26.09.2019, 14:16  [ТС]
Подскажите, пожалуйста, а как тогда правильно организовывать хранение паролей?
У меня такая ситуация - пусть есть анонимный пользователь, для него есть read-only УЗ в БД, по которой он может делать селекты к некоторым таблицам. У меня используется в автотестах, но пример с пользователем, который запрашивает наличие товара на складе в интернет-магазине - очень похож. Т.е. какой-то набор дефолтных действий, доступный всем.
Просто хранить в коде - разрабы (PHP) закидали какахами, после того, как я запушился :black_eye.:
Сейчас, я, скорее всего, использую хранение в config.properties, доступ к которому будет ограничиваться средствами ОС.
Но теперь даже интересно становится, кто как в продакшн среде это делает (чтобы и от декомпиляции, и от вытаскивания данных из кода или памяти, и от перехвата запроса на сервер). Хранение распечаток в ящике стола не предлагать
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.09.2019, 14:20
если у кого-то будет доступ к продакшн среде, то он наверняка найдет способ получить все, что ему нужно. Так что ты решаешь какие-то надуманные проблемы
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
26.09.2019, 15:22
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
ага...пароль от БД сервера запрашивать каждый раз на старте =)))
Я не понял что имел ввиду korvin_, и сейчас не понимаю что смешного в том чтобы запрашивать пароль (например на время сессии) при доступе к БД или какому либо сервису
Логика такая : если опасно хранить в коде потому что можно его "прочитать" с дампа памяти на этом компьютере, то на этом комьютере также можно прочитать проперти файл, путь обращения, прописаный тут же, к какому либо файлу (где хранится ключ), или сам ключ с дампа памяти (мы же будем его "читать" на предмет того подходит ли он нам, откуда бы он к нам не попал).
Практика : комп можно взламать (рас дамп кто-то читает), или я с открытой сети (ноут, телефон), или вообще в интернет-кафе с чужого компа хочу купить билет и мне надо доступ к счету. Я же не буду там хранить пароль?!

Добавлено через 14 минут
Цитата Сообщение от alecss131 Посмотреть сообщение
А чем не прямое хранение логина/пароля спасет от той же декомпиляции и вытаскивания данных из кода? Если его из кода не вытащить или памяти, то можно используя например java agent перехватить запрос на сервер и вытащить оттуда.
А что если я не буду у себя хранить пароль, а например буду вводить его при запросе к серверу? Типа сервер мне посылает один сгенерированый ключ с вопросом я ему отвечаю другим ключем (по сети комбинация из "каши" ключей), сервер то что сгенерировал помнит и таким обарзом "вытаскивает" мой ключ и если он валидный то либо удовлетворяет мой запрос на доступ либо шлет мне временный сгенерированый ключ с которым я временно работаю.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.09.2019, 15:53
Цитата Сообщение от ViktorFX Посмотреть сообщение
не понимаю что смешного в том чтобы запрашивать пароль
Представь что сервер этого форума написан на джава. У кого и когда надо спрашивать пароль к БД?

Цитата Сообщение от ViktorFX Посмотреть сообщение
если опасно хранить в коде потому что можно его "прочитать" с дампа памяти на этом компьютере, то на этом комьютере также можно прочитать проперти файл
В реальности все несколько сложнее. Обычно "взломать компьютер" нельзя. Вместо этого используются другие векторы атаки.

Приведу простой пример. Ты написал сервер и задеплоил его на удаленную виртуалку. Доступ к ней защищен, все как надо. Однако ты используешь спринг бут и у тебя есть actuator. Это очень удобная штука чтобы решать разные проблемы. И ты по запарке или по незнанию забыл закрыть апи актуатора паролем. Или дал какой-то простой пароль.

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

Смысл в том, что чем сложнее система и чем больше модулей она включает (а особенно если её разрабатывает команда или несколько команд), тем больше вероятность получить где-то дыру в защите или много мелких дырочек, по одиночке ни на что не влияющих, но вместе позволяющий провести атаку на сервер.
В данном случае речь идет о 2х вобщем то не критчиных вещах.
1. Нет пароля на актуатор
2. БД не сидит за VPN (но имеет сложный пароль)

По отдельности это серьезные, но не критичные проблемы, однако вместе они дают полный доступ к твоему серверу.

PS. Все вышесказанное, конечно не относится к пет проектам студентов, а имеет смысл для действительно больших энтерпрайз решений.
3
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
26.09.2019, 16:17
А разве java не позволяет хранить хэш MD5 и сверять хэш пароля с ним?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.09.2019, 17:05
rvs_dk, как это должно помочь мне подключиться к бд?
0
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 407
Регистрация: 11.08.2017
Сообщений: 4,357
Записей в блоге: 2
26.09.2019, 19:06
Цитата Сообщение от ViktorFX Посмотреть сообщение
А что если я не буду у себя хранить пароль, а например буду вводить его при запросе к серверу? Типа сервер мне посылает один сгенерированый ключ с вопросом я ему отвечаю другим ключем (по сети комбинация из "каши" ключей), сервер то что сгенерировал помнит и таким обарзом "вытаскивает" мой ключ и если он валидный то либо удовлетворяет мой запрос на доступ либо шлет мне временный сгенерированый ключ с которым я временно работаю.
Это имхо уже не хранение пароля а вообще другой способ авторизации.
Нечто похожее автору и стоит в итоге реализовать и использовать, если уж пароль хранить в коде не хочется, а все остальные способы хранения пароля легко будут дампится. Еще как вариант использовать несимметричное шифрование с парой ключей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2019, 19:06
Помогаю со студенческими работами здесь

Где хранить логин и пароль (авторизация на сайте)
Доброго времени суток! Была поставлена задача сделать сайт с использованием JS. Есть сайт HTML. Решил добавить в него авторизацию и...

Где хранить логин и пароль для входа в веб-приложение?
Здравствуйте, есть простой вопрос: где и как логичнее будет хранить логин и пароль для входа в веб-приложение, не используя сторонее ПО...

Регистрация - в каком месте в коде и как происходит запись введённой информации (логин, пароль, почта) в базу данных?
Подскажите, при регистрации нового пользователя, в каком месте в коде и как происходит запись введённой информации (логин, пароль, почта) в...

Вводится строка, содержащая команду вида: ftp://логин:пароль@адрес_сервера. Написать программу, которая из введенной строки выделяет логин, пароль и а
Вводится строка, содержащая команду вида: ftp://логин:пароль@адрес_сервера. Написать программу, которая из введенной строки выделяет логин,...

Как убрать логин и пароль?
Есть код подключения к базе mssql но вот загвостка у меня в sql идёт авторизация через windows а в коде через логин и пароль. Как убрать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru