Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

MS Access - доступ на уровне пользователей.   Найти похожие ветки 

 
Pavelkq   (2009-01-07 18:31) [0]

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


 
MsGuns ©   (2009-01-07 19:24) [1]

Подключение в БД надо делать с помощью диалога ран-тайма. В дизайне соединение деактивировать.


 
sniknik ©   (2009-01-07 19:43) [2]

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

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

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


 
DVM ©   (2009-01-07 20:25) [3]


> Pavelkq

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


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

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


 
MsGuns ©   (2009-01-07 20:49) [5]

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


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

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


 
sniknik ©   (2009-01-07 21:57) [7]

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


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

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


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

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

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


 
Anatoly Podgoretsky ©   (2009-01-07 22:15) [10]

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

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


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

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


 
DVM ©   (2009-01-07 22:31) [12]


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

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


 
DVM ©   (2009-01-07 22:38) [13]

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

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


 
palva ©   (2009-01-07 22:43) [14]


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

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


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

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


 
palva ©   (2009-01-08 11:30) [16]

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


 
MsGuns ©   (2009-01-08 14:30) [17]

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

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


 
sniknik ©   (2009-01-08 15:11) [18]

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

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


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

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


 
MsGuns ©   (2009-01-08 15:49) [20]

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

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


 
sniknik ©   (2009-01-08 17:31) [21]

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2009.02.15;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.017 c
2-1230487383
inviz
2008-12-28 21:03
2009.02.15
как преобразовать array и caption ?


3-1215370641
flaxe
2008-07-06 22:57
2009.02.15
DBF


6-1198506555
Palladin
2007-12-24 17:29
2009.02.15
WinInet и ERROR_INTERNET_SECURE_CHANNEL_ERROR


15-1229579107
AIK
2008-12-18 08:45
2009.02.15
Дубликат сайта что ли?


2-1230921661
New77
2009-01-02 21:41
2009.02.15
Как ограничить выбор в ComboBox - a, b, с и "Пусто"?