Вниз
Скачать: CL | DM;

Возвращаемый интерфейс для трехзвенки   Найти похожие ветки 

 
Nikolay M. ©   (2003-06-04 16:59) [0]

Возникла такая идея для защиты уровня бизнес-логики от клиентского приложения, которое, в принципе, может быть написано каким-нибудь другим программистом: хранить на сервере права пользователя клиентского приложения (скажем, vasya_p может просматривать список заказов, но не может их редактировать), сделать аутентификацию на клиенте, после чего клиенту хотелось бы давать интерфейс (грубо говоря), в котором имеется только метод GetOrders, но отсутствует метод EditOrder. Т.е чтобы клиент не имел возможности даже вызвать метод, к которому он не имеет доступа. Может кто делал подобное? Пока видится 3 решения:
1 - посоветовали покопать в сторону IDispatchEx, до этого пока руки не дошли;
2 - объявить кучу интерфесов, в каждом - по методу, а потом возвращать нужные через safearray;
3 - сделать на сервере функцию типа GetAllowedMethods и возвращать dispid-ы разрешенных методов.


 
dj next   (2003-06-04 17:16) [1]

делал номер 3 просто и быстро и думать не надо


 
Набережных С. ©   (2003-06-04 22:12) [2]

Все ИМХО.
Идея непродуктивна. Несмотря на кажущуюся простоту, в сколь нибудь серьезном проекте результат получится громоздким и сложным, а сам проект малопригодным к развитию. При сложной и развитой системе прав ошибки защиты практически неизбежны.
Что можно предложить:
При аутентификации создаем для пользователя битовую маску прав. В каждом методе делаем CheckAccess и при недостатке таковых возвращаем Access denied. Система очень гибкая и полностью открытая к расширению. Но это в том случае, если по каким-то причинам не подходит стандартная защита ОС.


 
Тих   (2003-06-04 23:35) [3]

Неплохая статья о принципах разграничения прав есть на delphikingdom.com.


 
Nikolay M. ©   (2003-06-05 09:41) [4]


> При аутентификации создаем для пользователя битовую маску
> прав. В каждом методе делаем CheckAccess и при недостатке
> таковых возвращаем Access denied.

Это само собой.
На самом деле, по дороге с работы задумался, каким образом можно, написав чужого клиента, выполнить методы сервера. Имхо, получается, что "непередача клиенту неразрешенных методов" в точности равно "невыполнение сервером неразрешенных методов". В обоих случаях доступ к методам (или их выполнение) разрешает только сервер. И в обоих же случаях можно снифером украсть чужие логин/хеш_пароля и выполнять методы, разрешенные этому пользователю. Так что может я зря все усложняю?
А на Королевство сейчас гляну, 10Х...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
9-97468
Ibrik
2003-01-17 09:56
2003.06.30
DelphiX


14-97885
EvgenTss
2003-06-13 15:09
2003.06.30
как разбить ip в стринговой переменной на октеты...


14-97837
Dr. Death
2003-06-11 00:32
2003.06.30
RUS-OFFICE .ORG Project


3-97518
gep
2003-06-06 06:24
2003.06.30
Firebird+fib_plus с чего начать


14-97828
SPeller
2003-06-11 13:46
2003.06.30
Я в шоке ...




   Наверх