Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: 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 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
7-97905
ИгорьШШШ
2003-04-22 08:44
2003.06.30
Список всех пользователей


3-97472
Silver_
2003-06-04 11:52
2003.06.30
UPDATE ... SELECT...


11-97577
slipper
2002-10-15 17:16
2003.06.30
API and KOL


14-97811
Caponid
2003-06-11 19:07
2003.06.30
Кто нить работал с QReport или ссылки знает?


3-97543
Hawk2
2003-06-06 10:37
2003.06.30
Конструкция UPDATE&SELECT