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

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

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

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

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

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

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

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

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

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

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

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

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


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

ololА уж если юзверь знат как это сделать - то и какая ХП ему помешает изменить данные в табле напрямую из броуса... и натворить прочих дел...Я вообще до этого работал только с MySQL. Но что-то я не понял что же это получается нельзя на InterBase написать нормально распредереление прав (защиту от хакеров - если Вам так больше нравится)?
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32634309
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Tellur, когда-то я тоже делал свою первую программу на IB и меня тоже волновали проблемы, что мне в инструкции написать, на дискете отдать или на болванку разориться, и особенно как я буду получать деньги от заказчика и в какой валюте. Все это было еще до первой строчи кода.
А потом понял - лучше сначала напишука я прогу, а потом о мелочах подумаю.
Так и Ваши проблемы с безопасностью. Важно наверное, но не в первую голову о них думать надо, особенно если Вы ... "я сам еще не работал с InterBase".
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #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
Организация разделения прав доступа
    #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
Организация разделения прав доступа
    #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
Организация разделения прав доступа
    #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
Организация разделения прав доступа
    #32634898
Somebody3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Somebody2Чего это я не получу. Handle это проперти объектов произошедших от
twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю
обработчик события и дизэблю нужный control, а искать его как раз
злоумышленнику надо. Но как только он его найдет и разрешит через
EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным.А ну если ты это для защиты то да, так пойдет. Я то было подумал ты про то как эту защиту обойти...
Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут.
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32634901
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Спасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут.


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

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

P.S. Ты б ник сменил чтоль, а то тут уже наверное думают, что это я сам собою разговариваю или что у меня раздвоение личности
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32634979
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Somebody2 Somebody3
Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут.
И как, если не секрет? Принцип действия, если можно
P.S. Ты б ник сменил чтоль, а то тут уже наверное думают, что это я сам собою разговариваю или что у меня раздвоение личности
Тогда уж раЗтроение...
Первого кто-нить видел?
Сообразили бы, на троих...
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635025
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий Somebody2 Somebody3
Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут.
И как, если не секрет? Принцип действия, если можно
P.S. Ты б ник сменил чтоль, а то тут уже наверное думают, что это я сам собою разговариваю или что у меня раздвоение личности
Тогда уж раЗтроение...
Первого кто-нить видел?
Сообразили бы, на троих...

Первым был тоже я Потом кто-то зарегистрировался под ником somebody.
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635027
Somebodi1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну-ка, быстро поменяли свои ники! А то будем сами с соборй разговаривать.
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635061
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvЧто за бредятина! Любая (почти) незашифрованная база, поставляемая вместе с приложением, всегда доступна с помощью средств ее администрирования. Методы защиты InterBase основываются на том, что файлы базы физически лежат в недоступном для юзеров месте, которое, однако, известно (Хост:Диск:По...Я что-то Вас не понимаю. Да, база доступна для администрирования, но только тем, кто знает пароль администратора. Естесвенно у пользователей нет физического доступа к базе данных. Диск тоже не пошарен. Ее может менять только СУБД (которая стоит на том же путере, что и база) по запросу пользователя. А при выполнении запроса, естественно, проверяются права.

Somebody2И как, если не секрет? Принцип действия, если можноЯ бы рассказал, но по правилам форума запрещено распространять такую информацию.
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635128
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Somebody2И как, если не секрет? Принцип действия, если можноЯ бы рассказал, но по правилам форума запрещено распространять такую информацию.[/quot]

Во блин оно как
Так я ж не прошу вас код выкладывать, я ж прошу в общих чертах. Да и код, это
скорее елементарные приемы программирования под Виндовс, а не инструкция взлома приложений
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635141
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tellur
...нельзя на InterBase написать нормально распредереление прав...

Если ты имеешь в виду использование только встроенных прав на сервере - то нормально нет.

Хотя можно извратится с выборкой не из таблиц а из предсталений или процедур, которые дадут поля данных в соответствии с твоими правами просмотра...

Но даже при этом у поля базы нет признака ReadOnly и проге всерано придется проверять могет юзверь эго изменить или нет...

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

Хотя одно другому не мешает... проверку прав доступа к таблицам и ХП может дублировать и сервер.
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635243
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
был похожий топик на тему
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635332
VaDima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
см. сюда
___
регардзы
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32635506
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaDimaсм. сюда
___
регардзы

ты ЭТО хоть раз реализовал?
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32637898
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так с триггерами разобрался - теперь все понятно.
Не понятным остается только вопрос: как мне запретить чтение некоторых записей таблицы для некоторых пользователей. Ведь нет такого триггера " before select "?
Насколько я понимаю кроме вьюх тут других вариантов нет?
...
Рейтинг: 0 / 0
Организация разделения прав доступа
    #32638625
Tonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня система доступа следующая, может, кому-то пригодится:
1. пользователь вводит логин/пароль
2. по введенным в п.1 данным расшифровывается файл, в котором содержится логин/пароль и РОЛЬ доступа к БД
3. коннект с добытыми в п.2 данными
4. проверка в таблице юзеров совпадения хеша пароля введенного в п.1 и хранящегося в БД
5. вытягивание из таблицы юзеров прав доступа на обьекты клиентской части
6. открывание на клиенте доступных по правам меню, кнопок и т.п.

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


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