Форум: "Начинающим";
Текущий архив: 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