реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Соединиться из Builder 2006 с MySQL, но не светить логин/пароль
toweroff
сообщение Nov 17 2011, 11:42
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Вот возникла такая задача - из приложения получить доступ к базе
Казалось бы - ничего сложного, dbExpress в руки и вперед
НО!
Логин/пароль к базе будут храниться в exe-щнике, который очень просто распотрошить

Как нормальные люди решают подобные задачи?

ЗЫ
Пользователь будет в приложении вводить свои логин/пароль, приложение должно соединиться с базой, выщемить оттуда данные, в зависимости от данных приложение будет себя вести в соответствии с ними каким-то образом

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 17 2011, 13:02
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Может, пусть пользователь вводит свой пароль к базе, а уже там хранится всё остальное?
Тогда не возникнет нужды хранить пароль в exe-шнике.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 17 2011, 13:11
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AHTOXA @ Nov 17 2011, 17:02) *
Может, пусть пользователь вводит свой пароль к базе, а уже там хранится всё остальное?
Тогда не возникнет нужды хранить пароль в exe-шнике.

ну тогда для этой базы нужно создавать кучу пользователей. Геморройно с точки зрения хостинга да и зачем?
там все дело в том, что всякие mysql_real_connect в качестве параметров требуют явно указать login/pass администратора базы
хочется замутить какой-то механизм, чтобы приложение лезло на сервер через какой-то PHP скрипт, исполняемый на сервере. Вот тут и пригодятся логины пользователей и т.д. которые они руками вводят, а админовские аккаунты никогда за сервер не выйдут
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 17 2011, 17:54
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Что есть куча пользователей с точки зрения базы? Те же самые записи базы данныхsm.gif
Или dbExpress не позволяет программно создавать пользователей?
Я к чему веду. Всяко в вашей программе будет интерфейс создания пользователей. Так пусть этот интерфейс вместо создания пользователей в специальной табличке базы данных создаёт их сразу как пользователей MySQL. Это решит ваши проблемы с хранением паролей.
А права конкретного пользователя после ввода пароля можно определять по правам пользователя MySQL на какую-либо таблицу.

По сравнению с хранением пароля в exe это видится более грамотным решением. ИМХО конечно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 17 2011, 20:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



хмм.. видно, я не совсем точно описал вводные данные

есть пользователи, для которых априори будет нечто в базе (пользователь MySQL с правами, или запись в некой таблице о его данных)
нужно подсоединиться к базе из приложения (пользователь вводит логин/пароль), получить доступ ТОЛЬКО к тем данным, которые относятся к этому пользователю

пользователи создаются заранее, сам он не может зарегистрироваться

ну и 100% никакие логины/пароли в приложении не должны храниться
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 18 2011, 07:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(toweroff @ Nov 17 2011, 15:42) *
Вот возникла такая задача - из приложения получить доступ к базе
Казалось бы - ничего сложного, dbExpress в руки и вперед
НО!
Логин/пароль к базе будут храниться в exe-щнике, который очень просто распотрошить

Как нормальные люди решают подобные задачи?
Во первых сгенерить логин и пароль в виде случайных (и длинных) строк (что бы они не опознавались именно как осмысленные строки). Во вторых в exe'нике их зашифровать, что бы их не было видно именно в виде строк.

Если приложение ставится на компьютер отдельно, то можно при установке записать логин и пароль на компьютер (в реестр в зашифрованном виде, а ключ через CryptoAPI в локальное хранилище ключей), и отдельно само приложение (в нем уже никаких логинов/паролей не будет вообще)



Кстати, если на машине есть TPM, то можно ключ записать туда. Тогда даже сняв копию со всей системы нельзя будет перенести это на другой комп.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Nov 18 2011, 11:03
Сообщение #7


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(toweroff @ Nov 18 2011, 00:18) *
...нужно подсоединиться к базе из приложения (пользователь вводит логин/пароль), получить доступ ТОЛЬКО к тем данным, которые относятся к этому пользователю...ну и 100% никакие логины/пароли в приложении не должны храниться.


если нужен коннект от клиента к бд и только со своими правами (и нельзя хранить на клиенте явки-пароли), то тут АНТОХА всё прально написал. в точке где заводится клиент, его логин/пароль=логин/пароль к самой базе и права на базу=те которые вы прописываете при создании. механизм создания(скрипт) учётки в базе - на серваке.

но это решение (держать коннекты к базе от клиентов) - мягко говоря нагрузка на БД. при этом в будущем эту систему тяжело масштабировать и сопровождать.

удачи вам
(круглый)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 11:30
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



спасибо

нагрузки будет мало, очень мало

логин/пароль будет жестко прошит в девайсе, который будет отдаваться клиенту (для каждого свои). То есть перед тем, как девайс будет вручен клиенту, создается доступ к базе по логинау/паролю в этом девайсе. Потом пользователь подключил девайс, прога выудила из него эти логины и с этим начала ломиться к базе. Оттуда получает пару сотен байт и закрывает соединение
Соответственно, даже если выудить из девайса информацию о логине и пароле, не должно произойти следующего:
1. Получения сведений о других девайсах (точнее, данных, относящихся к ним)
2. Получения сведений, относящихся к этому девайсу, но входящих в "админовое" поле

Да, пользователи MySQL - интересный подход. Но!
Допустим, данные хранятся в нескольких таблицах. ID девайса, дата передачи. ID девайса, его "путешествия". ID девайса, ключи шифрования
Это так, образно
Вот скажите мне, можно правами пользователя MySQL навесить фильтр на ID? То есть логинится пользователь, к нему каким-то образом привязывается ID девайса
И к любым запросам, которые он будет делать к этим таблицам, будет автоматом добавлен фильтр по ID?
Если такое возможно, то таки да, есть смысл регулировать все пользователями MySQL и их правами. Если нет - тогда нужен друной путь...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 18 2011, 13:08
Сообщение #9


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(toweroff @ Nov 18 2011, 13:30) *
нагрузки будет мало, очень мало


Логичнее каждому пользователю создавать собственную базу данных или собственный набор таблиц.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 13:13
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AlexandrY @ Nov 18 2011, 17:08) *
Логичнее каждому пользователю создавать собственную базу данных или собственный набор таблиц.

а потом сгребать в кучу данные для анализа - застрелиться laughing.gif

может есть какой-то способ создавать соединение, а запросы лепить из PHP... вот только как, да и правильно ли это...
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 18 2011, 13:57
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Вот скажите мне, можно правами пользователя MySQL навесить фильтр на ID?
Нет, только целиком на таблицы

У вас есть сервер, к которому коннектятся пользователи? Если да, то все пароли администратора должны быть в этом сервере, а пользовательские программы (клиенты) вообще не должны напрямую лезть в базу - а только через ваш сервер.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 14:02
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Nov 18 2011, 17:57) *
Если да, то все пароли администратора должны быть в этом сервере, а пользовательские программы (клиенты) вообще не должны напрямую лезть в базу - а только через ваш сервер.

вооот!!
именно это и есть
собссно вопрос-то в том, каким путем правильнее идти, чтобы это реализовать?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 18 2011, 14:42
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(toweroff @ Nov 18 2011, 15:13) *
а потом сгребать в кучу данные для анализа - застрелиться laughing.gif


Какого анализа?
Если самим юзерам не позворляется посмотреть что у других, то почему они должны позволять это делать какому-то администратору.
Неясна политика безопасности однако.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 14:47
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AlexandrY @ Nov 18 2011, 18:42) *
Какого анализа?
Если самим юзерам не позворляется посмотреть что у других, то почему они должны позволять это делать какому-то администратору.
Неясна политика безопасности однако.

что значит "какому-то администратору"?
он-то как раз должен знать, что там эти пользователи делали. Причем простым селектом
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 18 2011, 15:17
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(toweroff @ Nov 18 2011, 17:30) *
Вот скажите мне, можно правами пользователя MySQL навесить фильтр на ID? То есть логинится пользователь, к нему каким-то образом привязывается ID девайса
И к любым запросам, которые он будет делать к этим таблицам, будет автоматом добавлен фильтр по ID?
Если такое возможно, то таки да, есть смысл регулировать все пользователями MySQL и их правами. Если нет - тогда нужен друной путь...

Не выйдет. Права даются на отдельную таблицу.
Но. Можно создать для каждого пользователя отдельный VIEW типа "SELECT * FROM TABLE_FOR_ALL_USERS WHERE USER_ID = x", и дать ему полные права на этот вид. А на таблицу - не давать.
Тогда выйдет как надо - есть общая таблица для сбора статистики, а для каждого пользователя для неё отдельный вид.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 17:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016