Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Организация разделения прав доступа / 25 сообщений из 36, страница 1 из 2
03.08.2004, 10:26:33
    #32632581
Tellur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Передо мной стоит такая задача:
Написать систему с использованием InterBase6.0 и Delphi6 в которой бы предусматривалось разграничение прав пользователей не только по самим правам но и по данным. То есть например есть таблица с полем 'dtype', надо сделать так что бы для каждого пользователя можно было устанавливать его права на каждый тип документа (создание, чтение, изменение, удаление).
У меня есть 2 варианта:
1. Реализовать разграничение прав средствами InterBase.
2. Не предоставлять клиентской программе соединения с сервером InterBase вообще, а написать (тоже на Delphi) программу сервер, с которой и будут соединяться клиенты. Запросы будут передаваться в ввиде идентификаторов, ответы тоже в raw-формате.

Может кто-нибудь делал что-либо подобное. Можно ли это реализовать первым вариантом и как? (я сам еще не работал с InterBase)
На счет второго то я уверен, что можно, только как-то неказисто получится.
...
Рейтинг: 0 / 0
03.08.2004, 10:56:46
    #32632639
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
обычно дают права только на хранимые процедуры, и в ХП проверяют права, показывать или нет. делают процедуры для просмотра и для изменения
...
Рейтинг: 0 / 0
03.08.2004, 11:12:20
    #32632687
Tellur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Но этож придется делать свою таблицу юзверов и их прав. И каким нибудь макаром синхронизировать с системными. А я где-то читал что через SQL нельзя создать пользователя.
Вот поэтому я и спрашиваю: это вообще реально? кто-нибудь делал?
...
Рейтинг: 0 / 0
03.08.2004, 11:15:45
    #32632697
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
лично я делал свои таблицы юзеров и прав. мне даже это больше нравится. а вот местные гуру может подскажут, например, как вытянуть текущего интербейсного юзера в процедуре. вытягиваете, проверяете права и либо отлуп с эксепшеном либо выполняете действие

таблицу прав придется таки делать
...
Рейтинг: 0 / 0
03.08.2004, 11:19:16
    #32632715
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
создать пользователя через sql можно, конечно. а как же еще. ibexpert все движения мыши и нажатия кнопок передает в сервер как команды sql

есть еще вариант для большего запутывания вас: Add_User в rfunc ;)
...
Рейтинг: 0 / 0
03.08.2004, 11:20:42
    #32632720
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
достать текущего интербейсного пользователя и др. инфо

/topic/100906&hl=current_user#749793
...
Рейтинг: 0 / 0
03.08.2004, 13:10:35
    #32633140
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Tellur
1. Реализовать разграничение прав средствами InterBase.
2. Не предоставлять клиентской программе соединения с сервером InterBase

Если хош чоб все было красиво...
Например в менюшках небыло некоторых пунктов или они не выбирались в соответствии с правами пользователя... прийдется делать таблички для перечня объектов форм с указанием прав доступа и на OnShow проставлять им Visible и Enabled.
...
Рейтинг: 0 / 0
03.08.2004, 13:19:28
    #32633181
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Енто все хорошо... Но очень часто объекты реального мира неоднозначно отображаются на копоненты реалиционных таблиц. Вариант, как сказано выше - давать доступ не к таблицам (к ним все - запретить нахрен), а к процедурам, реализующим функциональность. Однако бывает несколько геморно на каждый чих реализовавыть свою ХП. И заказчик бывает такой, что полный абзац, не один пакет грант/ревоке испортишь, пока его ублажишь. Последний раз я сдел все на клиенте, реализовав все пользовательские действия через дельфийские TActionList's, слегка дописав последний - при попытке от'энейблить (извините, девушки) или от'визиблить этот конкретный экшн этому конкретному юзеру проверяются его права. Мне кажется, такая схема позволяет более точно соответствовать требованиям объектов реального мира.

Не кидайтесь камнями...
...
Рейтинг: 0 / 0
03.08.2004, 13:20:36
    #32633186
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
И в менюшках все шоколадно получается (как бонус - "само собой"), если, конечно, пункты менюшек на основе списка экшна делать.
...
Рейтинг: 0 / 0
03.08.2004, 13:40:26
    #32633268
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
2 mv
так настройки визибол и т.д. можно в БД хранить, сделать несколько табличек и при подклшючении делать селект и отображать то что нужно...
конечно придётся делать таблицу пользователей, ну и что, ничего страшного...
...
Рейтинг: 0 / 0
03.08.2004, 13:43:41
    #32633272
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Конечно, можно, но я не об этом - а об объектах, к которым огрничивается доступ.
...
Рейтинг: 0 / 0
03.08.2004, 13:51:51
    #32633297
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
вот у нас так и сделано, есть в БД таблицы доступа пользователей к объектам, при запуске по пользователю делается селект и устанавливаются соответствующие визиблы и энабледы...
...
Рейтинг: 0 / 0
04.08.2004, 06:08:36
    #32634190
Tellur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Спасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут.
Защиту надо делать через ХП, и насколько я понил другого способа нет?
...
Рейтинг: 0 / 0
04.08.2004, 06:33:45
    #32634197
Tellur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
И еще один вопрос по этой же задаче.
Есть таблица договоров. Договора бывают действующие и закрытые (архив договоров). Основная работа ведется, естественно, с действующими договорами. Вопрос в следующем: стоит ли хранить их в одной таблице или разбить на две (по идее это должно повысить производительность)?
...
Рейтинг: 0 / 0
04.08.2004, 08:16:00
    #32634222
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
TellurСпасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут.
Защиту надо делать через ХП, и насколько я понил другого способа нет?

Это интересно как ?!!!

Если войдя в прогу ты получаешь права только на свои действия...
(Например на изменение только определенных полей в документе) и добавить себе прав из самой проги ни-как...

В случае подклучения к базе другим способом (IBExpert и прочее...) ты должон знать - где она и як к ней подключиться...
По скольку прога к базе могет цепляться совсем с другим именем и паролем...

А уж если юзверь знат как это сделать - то и какая ХП ему помешает изменить данные в табле напрямую из броуса... и натворить прочих дел...

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

автор
...разбить на две (по идее это должно повысить производительность)?


Разбивать нужно только в крайнем случае (большие объемы информации которую необходимо хранить, но с ней не работают...)
...
Рейтинг: 0 / 0
04.08.2004, 08:49:23
    #32634250
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
TellurИ еще один вопрос по этой же задаче.
Есть таблица договоров. Договора бывают действующие и закрытые (архив договоров). Основная работа ведется, естественно, с действующими договорами. Вопрос в следующем: стоит ли хранить их в одной таблице или разбить на две (по идее это должно повысить производительность)?
ИМХО, разбивать не следует, лучше поле признака добавить...
но если у Вас там миллионы договоров в архиве, тогда пробовать надо...
...
Рейтинг: 0 / 0
04.08.2004, 09:00:11
    #32634267
Tellur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
ololЭто интересно как ?!!!Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow.

ololА уж если юзверь знат как это сделать - то и какая ХП ему помешает изменить данные в табле напрямую из броуса... и натворить прочих дел...Я вообще до этого работал только с MySQL. Но что-то я не понял что же это получается нельзя на InterBase написать нормально распредереление прав (защиту от хакеров - если Вам так больше нравится)?
...
Рейтинг: 0 / 0
04.08.2004, 09:34:43
    #32634309
arni
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Господин Tellur, когда-то я тоже делал свою первую программу на IB и меня тоже волновали проблемы, что мне в инструкции написать, на дискете отдать или на болванку разориться, и особенно как я буду получать деньги от заказчика и в какой валюте. Все это было еще до первой строчи кода.
А потом понял - лучше сначала напишука я прогу, а потом о мелочах подумаю.
Так и Ваши проблемы с безопасностью. Важно наверное, но не в первую голову о них думать надо, особенно если Вы ... "я сам еще не работал с InterBase".
...
Рейтинг: 0 / 0
04.08.2004, 11:25:19
    #32634619
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Tellur ololЭто интересно как ?!!!Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow.

Я в Виндузах слаб, может чего не знаю, но если так:

Код: plaintext
1.
2.
3.
4.
procedure TForm1.SomeControlEnter(Sender: TObject);
begin
 if (figvam) then enablewindow(twincontrol(Sender).Handle,false);
end;

?
...
Рейтинг: 0 / 0
04.08.2004, 11:46:54
    #32634679
Somebody3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Somebody2
Я в Виндузах слаб, может чего не знаю, но если так:

Код: plaintext
1.
2.
3.
4.
procedure TForm1.SomeControlEnter(Sender: TObject);
begin
 if (figvam) then enablewindow(twincontrol(Sender).Handle,false);
end;
Почти так. Только хендл окна ты так просто не получишь, ведь ты не будешь исполнять этот код в контексте клиентского приложения - надо использовать FindWindowEx. И вторым параметром передавать true
...
Рейтинг: 0 / 0
04.08.2004, 12:36:10
    #32634812
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Somebody3 Somebody2
Я в Виндузах слаб, может чего не знаю, но если так:

Код: plaintext
1.
2.
3.
4.
procedure TForm1.SomeControlEnter(Sender: TObject);
begin
 if (figvam) then enablewindow(twincontrol(Sender).Handle,false);
end;
Почти так. Только хендл окна ты так просто не получишь, ведь ты не будешь исполнять этот код в контексте клиентского приложения - надо использовать FindWindowEx. И вторым параметром передавать true

Чего это я не получу. Handle это проперти объектов произошедших от
twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю
обработчик события и дизэблю нужный control, а искать его как раз
злоумышленнику надо. Но как только он его найдет и разрешит через
EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным.

Или где?
...
Рейтинг: 0 / 0
04.08.2004, 12:44:21
    #32634834
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Somebody2 Somebody3 Somebody2
Я в Виндузах слаб, может чего не знаю, но если так:

Код: plaintext
1.
2.
3.
4.
procedure TForm1.SomeControlEnter(Sender: TObject);
begin
 if (figvam) then enablewindow(twincontrol(Sender).Handle,false);
end;
Почти так. Только хендл окна ты так просто не получишь, ведь ты не будешь исполнять этот код в контексте клиентского приложения - надо использовать FindWindowEx. И вторым параметром передавать true

Чего это я не получу. Handle это проперти объектов произошедших от
twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю
обработчик события и дизэблю нужный control, а искать его как раз
злоумышленнику надо. Но как только он его найдет и разрешит через
EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным.

Или где?

А кажись понял. Тут по моему ответу можно подумать, что я олол-у отечаю, на самом деле я это насчет
автор
Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow.
...
Рейтинг: 0 / 0
04.08.2004, 13:02:17
    #32634898
Somebody3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Somebody2Чего это я не получу. Handle это проперти объектов произошедших от
twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю
обработчик события и дизэблю нужный control, а искать его как раз
злоумышленнику надо. Но как только он его найдет и разрешит через
EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным.А ну если ты это для защиты то да, так пойдет. Я то было подумал ты про то как эту защиту обойти...
Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут.
...
Рейтинг: 0 / 0
04.08.2004, 13:03:15
    #32634901
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Код: plaintext
Спасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут.


Что за бредятина! Любая (почти) незашифрованная база, поставляемая вместе с приложением, всегда доступна с помощью средств ее администрирования. Методы защиты InterBase основываются на том, что файлы базы физически лежат в недоступном для юзеров месте , которое, однако, известно (Хост:Диск:Полный_Путь для TCP/IP, например, или Хост:Алиас - для FireBird). А уж если юзер получает файл базы в руки - тогда плевать на все гранты/роли/пароли...
...
Рейтинг: 0 / 0
04.08.2004, 13:21:40
    #32634963
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация разделения прав доступа
Somebody3
Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут.

И как, если не секрет? Принцип действия, если можно

P.S. Ты б ник сменил чтоль, а то тут уже наверное думают, что это я сам собою разговариваю или что у меня раздвоение личности
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Организация разделения прав доступа / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]