Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Схемы аутентификации пользователей приложения


Автор: soulhealer85 16.2.2009, 20:59
Народ, поделитесь пожалуйста, каким образом вы реализуете аутентификацию пользователей проги, работающей с БД? Храните пользователей и зашифрованные пароли в таблице типа "users", подключаетесь по неким guest, и ... что потом? а может как-то иначе надо делать? В общем буду очень благодарен за советы

Автор: Akella 16.2.2009, 21:50
Как ты не можешь догадываться, что от СУБД зависит подход такой?

Добавлено через 1 минуту и 6 секунд
А разве при создании темы не для тебя такие слова написаны?
Цитата

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)



Добавлено через 7 минут и 3 секунды
http://forum.vingrad.ru/index.php?showtopic=135490&view=findpost&p=1029551

Автор: soulhealer85 16.2.2009, 22:08
Для меня важны 2 сочетания:
1) BDE+FireBird
2) Ado+Oracle
P.S. Уважаемый Akella, если вам надоело отвечать на посты (хотя непонятно тогда, почему вы здесь "модераторствуете"), просто попейте пивка, остыньте... у вас в каждом слове какая-то озлобленность... расслабьтесь

Автор: Kbl4AH 16.2.2009, 22:25
Код

OracleQuery1.SQL.Text := 'SELECT login FROM logon WHERE login = :Login AND password = :Password';
OracleQuery1.Execute;
if OracleQuery1.Eof then
  Application.MessageBox('Неверные имя пользователя или пароль', 'Ошибка!')
else
begin
  FMain.Show;
  FLogon.Free;
end;

?

Автор: Akella 17.2.2009, 09:22
Цитата(soulhealer85 @  16.2.2009,  22:08 Найти цитируемый пост)
1) BDE+FireBird

Советую не использовать такую связку. Лучше взять компоненты прямого доступа:
AnyDAC: версия 1 бесплатная
FibPlus: платные, но это самые лучшие компоненты
IBX: встроены в дельфи


Цитата(soulhealer85 @  16.2.2009,  22:08 Найти цитируемый пост)
P.S. Уважаемый Akella, если вам надоело отвечать на посты (хотя непонятно тогда, почему вы здесь "модераторствуете"), просто попейте пивка, остыньте... у вас в каждом слове какая-то озлобленность... расслабьтесь 

с вами тут расслабишься smile 
Знаешь анекдот: "....Вывод: не расслабляйся, а то....." smile 


Цитата(soulhealer85 @  16.2.2009,  22:08 Найти цитируемый пост)
Для меня важны 2 сочетания:
1) BDE+FireBird
2) Ado+Oracle

Трудно это было написать? Или написать, что тебя интересуют все СУБД.

Добавлено через 42 секунды
soulhealer85, ты читал, что там по ссылке в моем первом сообщении?

Добавлено через 7 минут и 13 секунд
Если нет, то опишу кратко для Firebird. Физически все работают под одним логином (главного админа базы), а так в базе есть таблица пользователей, групп и прав. Почему так сделано? Ну причин тому несколько. Пароль ограничен 8-ю символами. Нет возможности указать логин русскими символами. При переносе базы данных на другой компьютер также требуется таскать и security2.fdb (файл с пользователями firebird). Есть возможность в программе назначать права не только на объекты базы, а и на объекты самой программы. Это может и не правильно, но так уж повелось. Были мысли переехать на схему с системными пользователями. Но времени не было. В firebird 3 пользователи firebird`а уже будут жить не в security2.fdb, а самой базе данных.
Ответ нормальный? Если что, спрашивай. smile 

Автор: Vas 17.2.2009, 13:16
ИМХО самый лучшый выход авторизация в самой БД с использованием прав на объекты БД, этим вы как минимум становитесь застрахованными от продвинутых пользователей которые могут пролезть в БД не из вашей проги и получить практически доступ админа.  Не зря разработчики БД немало внимания уделяют безопасности, а вы при всех схемах с одним пользователем это просто игнорируете. 

Автор: soulhealer85 17.2.2009, 14:03
Цитата

с вами тут расслабишься


 smile  ... А ты нормальный парень, извини что тоже был немного резок  smile 

Цитата

soulhealer85, ты читал, что там по ссылке в моем первом сообщении?

Читал - толковый пост, много нового узнал, спасибо

Akella, непонятен только вот такой момент (скорее не непонятен, а интересно как люди делают) - программа подключается под guest-ом, допустим юзер с введенным паролем/логином найден в какой-то собственной таблице "users"... а после этого переподключение ты не делаешь под некоторым пользователем, отличным от guest, у которого права не только на таблицу "users"? или у тебя guest имеет права и на другие обьекты?





Автор: Akella 17.2.2009, 15:19
Цитата(Vas @  17.2.2009,  13:16 Найти цитируемый пост)
а вы при всех схемах с одним пользователем это просто игнорируете. 

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

Автор: Frees 17.2.2009, 15:24
Цитата(Akella @  17.2.2009,  17:19 Найти цитируемый пост)
"Обезопасивать" в первую очередь нужно сам сервер и файл базы данных.

и "обезапасивать" сами данные - шифровать например

Автор: Akella 17.2.2009, 15:32
Родного шифрования в firebird`е не предусмотрено пока что. А шифровать "на лету" не очень удобно. Есть у меня одна такая программка, которая хранит в базе шифрованную инфу. Сортировка, фильтрация идут лесом в этом случае. А подключать внешние UDF нет желания, чтобы не морочить голову себе и админам.

Автор: Frees 17.2.2009, 15:36
Цитата(Akella @  17.2.2009,  17:32 Найти цитируемый пост)
Родного шифрования в firebird`е не предусмотрено пока что. А шифровать "на лету" не очень удобно. Есть у меня одна такая программка, которая хранит в базе шифрованную инфу. Сортировка, фильтрация идут лесом в этом случае. А подключать внешние UDF нет желания, чтобы не морочить голову себе и админам.

ну это на самом деле решаемые проблемы, не тривиально но решаемые

по поводу сортировки и поиска его придется делать скорее всего локально

Автор: Akella 17.2.2009, 15:47
Вот и я о том же. Например, DBGridEh из EhLib умеет локально сортировать. Только это получается раз 20 дольше. Про cxGrid ни чего не могу сказать, не знаю, не пробовал.

Автор: Frees 17.2.2009, 15:55
Цитата(Akella @  17.2.2009,  17:47 Найти цитируемый пост)
Про cxGrid ни чего не могу сказать, не знаю, не пробовал.

научить то даже и DBGrid можно локально сортировать.
тут главно не переусердствовать.
что бы Цена разработки не была дороже защищаемых данных

по сабжу 
мне больше нравится табличка с пользователями. и "Обезапасенный" файл базы данных

зы
Обойти можно любую защиту... !!!
нужно что бы стоймость взлома >= стоймости данных




Автор: Vas 17.2.2009, 15:56
Цитата(Akella @  17.2.2009,  15:19 Найти цитируемый пост)
можно файл базы спионерить и вся безопасность летит.....

Смотря какая БД. 
Цитата(Akella @  17.2.2009,  15:19 Найти цитируемый пост)
"Обезопасивать" в первую очередь нужно сам сервер и файл базы данных.

Естественно, обычно к серверам доступ ограничен, по другому о безопасности нечего и говорить и городить тогда права на объекты, шифрование и все прочее не стоит, возьмут  и унесут или файлы или весь сервак  smile 

Автор: Frees 17.2.2009, 15:58
Цитата(Vas @  17.2.2009,  17:56 Найти цитируемый пост)
шифрование и все прочее не стоит, возьмут под руки и унесут   smile 

если данные зашифрованы толку не будет от того что унести смогли

Автор: Vas 17.2.2009, 16:02
Цитата(Frees @  17.2.2009,  15:55 Найти цитируемый пост)
Обойти можно любую защиту... !!!

Сам же говорил smile

Автор: Akella 17.2.2009, 17:38
да, но стоимость обхода может стоить ого-го

Автор: Vas 18.2.2009, 08:01
Цитата(Akella @  17.2.2009,  17:38 Найти цитируемый пост)
да, но стоимость обхода может стоить ого-го 

Поэтому надо сначала определить для чего задача, и стоит ли сохранение данных таких затрат при разработке. Всегда должна быть разумная достаточность.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)