Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-97536
ККВ
2003-06-05 11:40
2003.06.30
DBF в сети


3-97521
Fantasy
2003-06-06 01:48
2003.06.30
Lookup-поля


1-97670
KPY
2003-06-17 08:18
2003.06.30
Как два байта преобразовать в слово


11-97562
SerB
2002-10-08 08:15
2003.06.30
Klyx & Kol & MCK


7-97909
LikeLamer
2003-04-21 10:24
2003.06.30
Вызов свойства компонента из его контекстного меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский