|
|
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Передо мной стоит такая задача: Написать систему с использованием InterBase6.0 и Delphi6 в которой бы предусматривалось разграничение прав пользователей не только по самим правам но и по данным. То есть например есть таблица с полем 'dtype', надо сделать так что бы для каждого пользователя можно было устанавливать его права на каждый тип документа (создание, чтение, изменение, удаление). У меня есть 2 варианта: 1. Реализовать разграничение прав средствами InterBase. 2. Не предоставлять клиентской программе соединения с сервером InterBase вообще, а написать (тоже на Delphi) программу сервер, с которой и будут соединяться клиенты. Запросы будут передаваться в ввиде идентификаторов, ответы тоже в raw-формате. Может кто-нибудь делал что-либо подобное. Можно ли это реализовать первым вариантом и как? (я сам еще не работал с InterBase) На счет второго то я уверен, что можно, только как-то неказисто получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 10:26:33 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
обычно дают права только на хранимые процедуры, и в ХП проверяют права, показывать или нет. делают процедуры для просмотра и для изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 10:56:46 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Но этож придется делать свою таблицу юзверов и их прав. И каким нибудь макаром синхронизировать с системными. А я где-то читал что через SQL нельзя создать пользователя. Вот поэтому я и спрашиваю: это вообще реально? кто-нибудь делал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 11:12:20 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
лично я делал свои таблицы юзеров и прав. мне даже это больше нравится. а вот местные гуру может подскажут, например, как вытянуть текущего интербейсного юзера в процедуре. вытягиваете, проверяете права и либо отлуп с эксепшеном либо выполняете действие таблицу прав придется таки делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 11:15:45 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
создать пользователя через sql можно, конечно. а как же еще. ibexpert все движения мыши и нажатия кнопок передает в сервер как команды sql есть еще вариант для большего запутывания вас: Add_User в rfunc ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 11:19:16 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
достать текущего интербейсного пользователя и др. инфо /topic/100906&hl=current_user#749793 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 11:20:42 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Tellur 1. Реализовать разграничение прав средствами InterBase. 2. Не предоставлять клиентской программе соединения с сервером InterBase Если хош чоб все было красиво... Например в менюшках небыло некоторых пунктов или они не выбирались в соответствии с правами пользователя... прийдется делать таблички для перечня объектов форм с указанием прав доступа и на OnShow проставлять им Visible и Enabled. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:10:35 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Енто все хорошо... Но очень часто объекты реального мира неоднозначно отображаются на копоненты реалиционных таблиц. Вариант, как сказано выше - давать доступ не к таблицам (к ним все - запретить нахрен), а к процедурам, реализующим функциональность. Однако бывает несколько геморно на каждый чих реализовавыть свою ХП. И заказчик бывает такой, что полный абзац, не один пакет грант/ревоке испортишь, пока его ублажишь. Последний раз я сдел все на клиенте, реализовав все пользовательские действия через дельфийские TActionList's, слегка дописав последний - при попытке от'энейблить (извините, девушки) или от'визиблить этот конкретный экшн этому конкретному юзеру проверяются его права. Мне кажется, такая схема позволяет более точно соответствовать требованиям объектов реального мира. Не кидайтесь камнями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:19:28 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
И в менюшках все шоколадно получается (как бонус - "само собой"), если, конечно, пункты менюшек на основе списка экшна делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:20:36 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
2 mv так настройки визибол и т.д. можно в БД хранить, сделать несколько табличек и при подклшючении делать селект и отображать то что нужно... конечно придётся делать таблицу пользователей, ну и что, ничего страшного... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:40:26 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Конечно, можно, но я не об этом - а об объектах, к которым огрничивается доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:43:41 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
вот у нас так и сделано, есть в БД таблицы доступа пользователей к объектам, при запуске по пользователю делается селект и устанавливаются соответствующие визиблы и энабледы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:51:51 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Спасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут. Защиту надо делать через ХП, и насколько я понил другого способа нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 06:08:36 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
И еще один вопрос по этой же задаче. Есть таблица договоров. Договора бывают действующие и закрытые (архив договоров). Основная работа ведется, естественно, с действующими договорами. Вопрос в следующем: стоит ли хранить их в одной таблице или разбить на две (по идее это должно повысить производительность)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 06:33:45 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
TellurСпасибо, конечно. Но всякие визиблы и энейблы это, насколько я понимаю, дело пятое, потому что такую защиту (визиблами и энейблами) можно обойти за пару минут. Защиту надо делать через ХП, и насколько я понил другого способа нет? Это интересно как ?!!! Если войдя в прогу ты получаешь права только на свои действия... (Например на изменение только определенных полей в документе) и добавить себе прав из самой проги ни-как... В случае подклучения к базе другим способом (IBExpert и прочее...) ты должон знать - где она и як к ней подключиться... По скольку прога к базе могет цепляться совсем с другим именем и паролем... А уж если юзверь знат как это сделать - то и какая ХП ему помешает изменить данные в табле напрямую из броуса... и натворить прочих дел... Тебе права нужны для распределения доступа к данным пользователей или для защиты от хакеров ? автор ...разбить на две (по идее это должно повысить производительность)? Разбивать нужно только в крайнем случае (большие объемы информации которую необходимо хранить, но с ней не работают...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 08:16:00 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
TellurИ еще один вопрос по этой же задаче. Есть таблица договоров. Договора бывают действующие и закрытые (архив договоров). Основная работа ведется, естественно, с действующими договорами. Вопрос в следующем: стоит ли хранить их в одной таблице или разбить на две (по идее это должно повысить производительность)? ИМХО, разбивать не следует, лучше поле признака добавить... но если у Вас там миллионы договоров в архиве, тогда пробовать надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 08:49:23 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
ololЭто интересно как ?!!!Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow. ololА уж если юзверь знат как это сделать - то и какая ХП ему помешает изменить данные в табле напрямую из броуса... и натворить прочих дел...Я вообще до этого работал только с MySQL. Но что-то я не понял что же это получается нельзя на InterBase написать нормально распредереление прав (защиту от хакеров - если Вам так больше нравится)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 09:00:11 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Господин Tellur, когда-то я тоже делал свою первую программу на IB и меня тоже волновали проблемы, что мне в инструкции написать, на дискете отдать или на болванку разориться, и особенно как я буду получать деньги от заказчика и в какой валюте. Все это было еще до первой строчи кода. А потом понял - лучше сначала напишука я прогу, а потом о мелочах подумаю. Так и Ваши проблемы с безопасностью. Важно наверное, но не в первую голову о них думать надо, особенно если Вы ... "я сам еще не работал с InterBase". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 09:34:43 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Tellur ololЭто интересно как ?!!!Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow. Я в Виндузах слаб, может чего не знаю, но если так: Код: plaintext 1. 2. 3. 4. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:25:19 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Somebody2 Я в Виндузах слаб, может чего не знаю, но если так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:46:54 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Somebody3 Somebody2 Я в Виндузах слаб, может чего не знаю, но если так: Код: plaintext 1. 2. 3. 4. Чего это я не получу. Handle это проперти объектов произошедших от twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю обработчик события и дизэблю нужный control, а искать его как раз злоумышленнику надо. Но как только он его найдет и разрешит через EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным. Или где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 12:36:10 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Somebody2 Somebody3 Somebody2 Я в Виндузах слаб, может чего не знаю, но если так: Код: plaintext 1. 2. 3. 4. Чего это я не получу. Handle это проперти объектов произошедших от twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю обработчик события и дизэблю нужный control, а искать его как раз злоумышленнику надо. Но как только он его найдет и разрешит через EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным. Или где? А кажись понял. Тут по моему ответу можно подумать, что я олол-у отечаю, на самом деле я это насчет автор Это пятиминетное дело с помощью API функций EnableWindow, ShowWindow. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 12:44:21 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Somebody2Чего это я не получу. Handle это проперти объектов произошедших от twincontrol. Если хочу, чтоб контрол был disabled, просто устанавливаю обработчик события и дизэблю нужный control, а искать его как раз злоумышленнику надо. Но как только он его найдет и разрешит через EnableWindow, то при попытке сфокусировать данный контрол окно опять станет неактивным.А ну если ты это для защиты то да, так пойдет. Я то было подумал ты про то как эту защиту обойти... Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 13:02:17 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Что за бредятина! Любая (почти) незашифрованная база, поставляемая вместе с приложением, всегда доступна с помощью средств ее администрирования. Методы защиты InterBase основываются на том, что файлы базы физически лежат в недоступном для юзеров месте , которое, однако, известно (Хост:Диск:Полный_Путь для TCP/IP, например, или Хост:Алиас - для FireBird). А уж если юзер получает файл базы в руки - тогда плевать на все гранты/роли/пароли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 13:03:15 |
|
||
|
Организация разделения прав доступа
|
|||
|---|---|---|---|
|
#18+
Somebody3 Ну и этот вариант с авто-дизэйблом тоже можно обмануть, правда это займет немного больше чем 5 минут. И как, если не секрет? Принцип действия, если можно P.S. Ты б ник сменил чтоль, а то тут уже наверное думают, что это я сам собою разговариваю или что у меня раздвоение личности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 13:21:40 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=459&tid=1578131]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 410ms |

| 0 / 0 |
