Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MS Access - доступ на уровне пользователей. [D6, XP]


Страницы:   1 2

Pavelkq ©   (2009-01-07 18:31:00) 

Разработал приложение для работы с БД через АДО. Настала пора защитить свою базу. Зашел в нее и создал пароль пользователю Admin (который по-умолчанию). Так же создал пользователя view с пустым паролем. Раздал права (пользователю и группе, куда он входит - полько чтение, а админу - полный доступ). Запускаю свое приложение и, о чудо, пароль вводить никуда не требуется. База доступна для прежнего пользователя Admin c пустым паролем. Более того, когда пытаюсь задать пароль для подключения ADOTable в ConnectionString и проверить подключение - ничего не получается. Так же пользователя view без пароля тоже не пускает. Как правильно раздать права на базу? Хочу, чтобы пользователь в моем приложении вводил пароль и в зависимости от его правильности получал доступ (т.е. еще надо сделать проверку, верный ли пароль). Помогите, пожалуйста!


sniknik   (2009-01-08 17:31:00) [1]

> Усе, нашел решение
> ADOConnection1.Execute('ALTER DATABASE PASSWORD новыйпароль старыйпароль');
это пароль на базу, а не на юзера, снимается еще легче...

> Ты не понял
а по моему наоборот ...
речь идет о авторе, раз уж он сменил расширение с mdb на что то другое, то зачем переименовывать его перед соединением? и так пойдет. а уж цели по которым файл "прячется" совершенно не волнуют.
или объясни мне что ты имел в виду говоря
> с переименованием перед соединением и после.
?

и кстати  единственным товарищем "который хочет полазить в базе" наверняка будет он сам, ну и, если есть, кто то из поддержки программы (админ и т.д.)...
почему я и резко против... работал рядом с цто, видел к чему приводит.


MsGuns   (2009-01-08 15:49:00) [2]

>sniknik ©   (08.01.09 15:11) [18]

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


Pavelkq   (2009-01-08 15:36:00) [3]

Усе, нашел решение
ADOConnection1.Execute('ALTER DATABASE PASSWORD новыйпароль старыйпароль');


sniknik   (2009-01-08 15:11:00) [4]

> Для подключения надо по крайней мере знать имя файла
а то он в своей программе не знает имя файла...

для переименовывания ->
> с переименованием перед соединением и после.
тоже надо знать имя файла... и это переименовывание лишнее.


MsGuns   (2009-01-08 14:30:00) [5]

>sniknik ©   (07.01.09 22:00) [8]
>лишнее. расширение ничего не значит, подключится с любым.

Для подключения надо по крайней мере знать имя файла


palva   (2009-01-08 11:30:00) [6]

Умею делать через DAO. Если хотите, посмотрите мою шпаргалку на VBScript.
http://vktm.fatal.ru/bzik/daopwd.htm
Но советую поискать способ с использованием JRO.
http://www.cyberguru.ru/programming/delphi/delphi-ado-extensions-page4.html


Pavelkq   (2009-01-08 10:30:00) [7]

Возник вопросик, в строке ConnectionString прописываю ...;Jet OLEDB:Database Password=пароль
Как из приложения сменить этот пароль? Вроде бы есть поле Jet OLEDB:New Database Password, но не разобрался, как им пользоваться?


palva   (2009-01-07 22:43:00) [8]


> Получим те же яйца, только в профиль как если бы сразу взяли
> бесплатный MS SQL.

Естественно. Часто упорство заказчика можно преодолеть только доведя проект до краха. Но раз за битье посуды будет заплачено, то почему бы не поучаствовать.


DVM   (2009-01-07 22:38:00) [9]

Не, делаем так:

Делаем Web службу, которая будет брать данные из файла Access и возвращать их в XML через HTTP. :) Аналогично запросы к базе будут поступать через обращения к службе.  Доступ разграничиваем на веб-сервере.


DVM   (2009-01-07 22:31:00) [10]


> palva ©   (07.01.09 22:16) [11]

Получим те же яйца, только в профиль как если бы сразу взяли бесплатный MS SQL.


palva   (2009-01-07 22:16:00) [11]

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


Anatoly Podgoretsky   (2009-01-07 22:15:00) [12]

> sniknik  (07.01.2009 21:57:07)  [7]

Так Микрософт уже давно сказал, при работе в Акцесс забудьте про формат Акцесс и используйте бесплатный MS SQL.


Anatoly Podgoretsky   (2009-01-07 22:13:00) [13]

> Smile  (07.01.2009 21:23:06)  [6]

С клавиатуры нельзя ввести только один символ #0


sniknik   (2009-01-07 22:00:00) [14]

> с переименованием перед соединением и после.
лишнее. расширение ничего не значит, подключится с любым.


sniknik   (2009-01-07 21:57:00) [15]

> что достаточно запоролить базу не отображаемыми символами
это и тогда всего лишь затрудняло определение пароля (нужна была не фри версия "вскрывальщика"), а сейчас это вообще фикция, т.к. "вскрывальщики" развивались (выдаст в любом виде хоть строкой хоть в 16чном виде), а базу акцесса не развивают уже 5лет.


Smile   (2009-01-07 21:23:00) [16]

Подобного рода вопрос (о пароле) возникал несколько лет назад (когда sniknik еще не был мастером (голубым)). И вроде бы все пришли к общему мнению, что достаточно запоролить базу не отображаемыми символами (то есть такими, какие невозможно ввести с клавиатуры, типа TAB, BackSpase, Enter и тому подобное)
Странно, что этот вопрос возник вновь, и еще более странно, что заказчик требует этого. Заказчику должно быть достаточно, что эту базу не сможет никто редактировать, кроме как , через приложение.


MsGuns   (2009-01-07 20:49:00) [17]

Если заказчик требует ввода пароля (т.е. процедуру авторизации) и все, то достаточно просто вводить пароль как сказал DVM ©   (07.01.09 20:25) [3]
Но если нужна истинная защита, т.е. чтобы к БД не было доступа иначе как из Вашего приложения, то "чистым" акцесом не обойдешься. Как один из примеров - "прятание" mdb под другим расширением с переименованием перед соединением и после. Хотя метод "дырявый" на все Коломенскую, все же работать может.


Pavelkq   (2009-01-07 20:36:00) [18]

Всем спасибо за коментарии. Защита нужна только потому, что так хочет заказчик.
DVM, пожалуй этим решением и ограничусь ;-)


DVM   (2009-01-07 20:25:00) [19]


> Pavelkq

Защита базы Access - это профанация. Поэтому предлагаю не зпморачиваться по этому поводу, а просто поставить пароль на базу (от случайных шаловливых рук) и этим ограничиться.


sniknik   (2009-01-07 19:43:00) [20]

> Настала пора защитить свою базу.
судя по
> ADOTable в ConnectionString
никуда еще не ушла пора учиться учиться и еще раз учиться. (впрочем она никогда никуда не уходит)

зачем тебе защита? в базе данные супер секретные? или просто боишься, что без твоей программы прямо в базе данные будет редактировать/вводить удобнее чем с ней? ... 90% "защиты" что я видел именно по этой причине (а оставшиеся 10% просто "парили" мозг туманными намеками)... + "защита" если чему и мешает так это сопровождению, "вскрыть" твою базу сможет любой кто в состоянии запустить соответствующую программу.

p.s. лучше бы подумал над удобностью проги.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо