|
|
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
День добрый. Для работы с неким приложением на сервере, используется javaws клиент. Этот же клиент стучится в БД согласно прописанных в конфиге настроек. Для всех юзеров проверка прав производится клиентом (согласно данных в БД), но юзер БД всегда используется один и тот же. Поскольку конфиг клиентского приложения ничем не защищен, а юзер БД обладает большими правами, возник вопрос: как лучше было бы скрыть логин-пароль юзера ДБ? Исходя из того, что сейчас он вообще никак не скрыт - даже тупое дешифрованием из конфига по паролю, зашитому в код, было бы уже полетом в космос. Но! Возможно, "за те же деньги" можно получить более достойный вариант? Например, скидывать процессу на сервере логин/пароль юзера, тот проверяет его, и, если юзер валидный, - отправляет ответом логин-пароль к базе. А далее - все по плану (но тут возникает вопрос шифрования сетевого траффика - иначе во многом теряется смысл). Кто может что умное присоветовать? Особенно было бы интересно узнать, какие варианты использются вами в реальной жизни. Всем спасибо. ========================== ну что, мартышка, - допрыгалась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 08:49:22 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
имхо самое действенное - отказаться от толстого клиента. проблема сразу перестанет существовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 10:24:49 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Deadyимхо самое действенное - отказаться от толстого клиента. проблема сразу перестанет существовать Не вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 11:06:15 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
используй закрытый протокол (запрашивающий логин с пассом) обмена данными толстого клиента с сервером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 11:29:35 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Зависит от используемой БД и реализации взаимодействия с ней. Скажем, для оракла, если вся логика в хранимых процедурах или пакетах, можно создать N пользователей в БД (реально ли?), а сами процедуры должны выполняться в контексте пользователя-владельца схемы БД. Соответственно, для соединения с БД использовать уникальные логины и пароли. Шифрование - несимметричный алгоритм или симметричный с предварительным обменом ключами между сервером и клиентом. Первый вариант помедленее будет. Хранение ключа на клиенте есть плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 11:33:13 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
BlackWallЗависит от используемой БД и реализации взаимодействия с ней. Скажем, для оракла, если вся логика в хранимых процедурах или пакетах, можно создать N пользователей в БД (реально ли?), а сами процедуры должны выполняться в контексте пользователя-владельца схемы БД. Соответственно, для соединения с БД использовать уникальные логины и пароли. Шифрование - несимметричный алгоритм или симметричный с предварительным обменом ключами между сервером и клиентом. Первый вариант помедленее будет. Хранение ключа на клиенте есть плохо. По пунктам: 1. БД - оракл, но логика размазана между бд и клиентом. И, честно говоря, не очень понимаю как это клеится к вопросу (без наездов, действительно не осознал). 2. N юзверей - это порядка сотни-другой. Гораздо сподручнее держать одного универсального БД юзера для всей этой грвардии. 3. Шифрование.. Тогда получается так: * Запросить клиентом с сервера паблик кей <А>. * Сгенерить (можно и одноразовый) ключ (чего-нить симметричного) <B> исходя из логина/пароля юзверя. * Зашифровать логин/пароль юзверя + ключ <B> ключем <А>. Отправить на сервер. * Получить зашифрованный ключем <B> логин-пароль доступа к БД, если юзер был валиден. Вроде, все. На правду похоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 12:04:14 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Врочем, можно вместо ключа <B> для че-нить симметричного, можно послать с клиента публичный ключ для чего нить нессиметричного :). Тогда протокол вообще можно на одном алгоритме посторить. =========================== ну что, мартышка, - допрыгалась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 12:08:43 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Если на сервере для работы с таблицами используются ХП, тогда пересоздаешь их с AUTHID DEFINER, создаешь публичные синонимы и работаешь из-под другого юзера, где доступа к таблицам напрямую НЕТ. т.е. имея логин и пароль публичный ользователь не сможет править выполнить запрос вроде DELETE FROM... Хотя это не лишает его возможности выполнять имеющиеся ХП, делающие что-то подобное. Вариант - ввести дополнительный параметр процедур - какой-нибудь sessionId. Тогда на каждый такой вызов нужно будет проверять привилегии. Это так сказать, вторая линия обороны. Пункт 3 - в принципе оно, но могу быть модификации например под только что описанную схему. По поводу последнего поста не согласен. Публичный ключ может быть только у сервера. Нет смысла на клиенте хранить свою пару ключей:) Упрощать некуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 12:34:30 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
BlackWall Пункт 3 - в принципе оно, но могу быть модификации например под только что описанную схему. По поводу последнего поста не согласен. Публичный ключ может быть только у сервера. Нет смысла на клиенте хранить свою пару ключей:) Упрощать некуда. По поводу паблик кея на клиенте это верно.. Его генерить, по-ходу, не получится. А хранить глупо. Сенкс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 13:04:54 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Можно на сервер воткнуть томкат с единственным сервлетом, который возвращает параметры для соединения с БД, Томкат настроить на протокол https. И будет все по стандартам без изобретания велосипеда и максимум 100 строк кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 13:46:01 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
wessenМожно на сервер воткнуть томкат с единственным сервлетом, который возвращает параметры для соединения с БД, Томкат настроить на протокол https. И будет все по стандартам без изобретания велосипеда и максимум 100 строк кода. Томкат там крутится, и выглядит предложение логично, но, вот, вопрос - кто-нить делал это в реальности? Ну, так, чисто из любопытства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 15:11:33 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
T800 но, вот, вопрос - кто-нить делал это в реальности? :)) А чего там делать то? Работы на час. При условии конечно, что вы знакомы с сервлетами и с классами URL, URLConnection или apache http client. Тут другой вопрос. Если вам нужно всего лишь скрыть логин/пароль, чтобы например пользователь не воспользовался ими в том же sql plus, то зачем тогда городить весь этот огород? Вот хорошее решение T800 дешифрованием из конфига по паролю, зашитому в код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 15:28:42 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
wessen T800 но, вот, вопрос - кто-нить делал это в реальности? :)) А чего там делать то? Работы на час. При условии конечно, что вы знакомы с сервлетами и с классами URL, URLConnection или apache http client. Тут другой вопрос. Если вам нужно всего лишь скрыть логин/пароль, чтобы например пользователь не воспользовался ими в том же sql plus, то зачем тогда городить весь этот огород? Вот хорошее решение T800 дешифрованием из конфига по паролю, зашитому в код Не, сервлет под это дело я напишу. Не за час, ибо давно это было, но неважно. Решение мне однозначно импонирует. Меня, право, несколько озадачил ваш вопрос "Зачем". Ответ прост: чтобы пользователь (или кто бы то ни было другой) не воспользовался логин/паролем и неважно из каких побуждений. Не мог, и - все тут. А шифрование по паролю, зашитому в код такого же порядка трудоемкости, как и запрос на сервер - будь то процесс или сервлет. Так что солнечному миру - да, да, да. Шифрованию по зашитому паролю - ... ;) Другое дело, что если кто отказался в свое время от этой затеи и предпочел другой путь (по каким- то неизвестным нам причинам) - вот что было бы интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 16:24:22 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
T800...Меня, право, несколько озадачил ваш вопрос "Зачем". Ответ прост: чтобы пользователь (или кто бы то ни было другой) не воспользовался логин/паролем и неважно из каких побуждений. Не мог, и - все тут... Здесь имеет место какое-то противоречие. Если ему (пользователю) нужен доступ к БД - создаёте ему отдельную учётку с минимальным набором привелегий. Если вы говорите - "Не мог, и - все тут..." - возникает предположение, что ваша система спроектирована неправильно либо вы сами до конца не понимаете, что собственно вам нужно и зачем. И вообще, все ваши действия по изобретению собственного протокола передачи пароля (или ключа) - не более чем шаманство. Вы не первый, кто на этот грабель наступает. Возможно для вашего предприятия это "покатит" (в силу различных причин) но тогда разрешите вас поздравить с полным провалом и дискредитацией. Постарайтесь хотя-бы чтобы ваши коллеги не догадались о ваших проделках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 21:31:43 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
mayton T800...Меня, право, несколько озадачил ваш вопрос "Зачем". Ответ прост: чтобы пользователь (или кто бы то ни было другой) не воспользовался логин/паролем и неважно из каких побуждений. Не мог, и - все тут... Здесь имеет место какое-то противоречие. Если ему (пользователю) нужен доступ к БД - создаёте ему отдельную учётку с минимальным набором привелегий. Если вы говорите - "Не мог, и - все тут..." - возникает предположение, что ваша система спроектирована неправильно либо вы сами до конца не понимаете, что собственно вам нужно и зачем. И вообще, все ваши действия по изобретению собственного протокола передачи пароля (или ключа) - не более чем шаманство. Вы не первый, кто на этот грабель наступает. Возможно для вашего предприятия это "покатит" (в силу различных причин) но тогда разрешите вас поздравить с полным провалом и дискредитацией. Постарайтесь хотя-бы чтобы ваши коллеги не догадались о ваших проделках. По поводу неправильно спроектированной системы - это действительно так. Далеко не все идеально, в том числе и этот момент с юзерами БД. Так уж получилось, что юзер БД, используемый клиентом имеет достаточно много прав. Не вижу простого пути обойти сей момет (что есть - то есть) - а, вот, скрыть юзера дб - задача вполне выполнимая. Насчет собственного протокола передачи логина пароля - ну, вообще-то это общепринятый протокол передачи конф. данных по открытому каналу (обычно сеансовых ключей). Кроме того, это можно сделать абсолютно безопасно, но дело не в этом - на то я и топик поднял, чтобы спросить - а как правильно-то? К вам лично вопрос: решали ли вы когда бы то ни было задачу сокрытия логина/пароля юзера дб на клиентской машине? Есть ли способ избежать этого, при условии, что приложение, например, должно уметь выполнять некоторые операции, но права эти сами по себе опасные и не хотелось бы, чтобы данный аккаунт был общеизвестен. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 05:07:06 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
T800<..>Кроме того, это можно сделать абсолютно безопасно, <..> Оффтоп, но все же. Избегайте слова "абсолютно", когда речь идет о защите информации. Особенно при использовании "общепринятых" протоколов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:21:49 |
|
||
|
Как скрыть логин-пароль к базе
|
|||
|---|---|---|---|
|
#18+
Leonidv T800<..>Кроме того, это можно сделать абсолютно безопасно, <..> Оффтоп, но все же. Избегайте слова "абсолютно", когда речь идет о защите информации. Особенно при использовании "общепринятых" протоколов. Готов обсуждать, если вы знакомы (хотя бы) с этим Было бы интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:27:24 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34400179&tid=2146332]: |
0ms |
get settings: |
14ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
49ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 319ms |
| total: | 530ms |

| 0 / 0 |
