Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


2-1230939157
Single
2009-01-03 02:32
2009.02.15
Приведение типов


13-1122989175
cherrex
2005-08-02 17:26
2009.02.15
Не могу запустить приложение в DELPHI 2005


2-1230902844
FEV
2009-01-02 16:27
2009.02.15
Формат файлов ASF


2-1231075826
Hank
2009-01-04 16:30
2009.02.15
Как "загрузить" все поля в ADOQuery?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский