Форум: "Базы";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
ВнизВозвращаемый интерфейс для трехзвенки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c