Главная страница
    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
1-97603
denis24
2003-06-17 10:34
2003.06.30
функция STR()


4-97930
xZero
2003-04-28 19:06
2003.06.30
Thread


1-97697
mmm
2003-06-17 18:32
2003.06.30
Как переименовать файл?


14-97859
gn
2003-06-11 08:40
2003.06.30
прикольно


3-97535
nedefan
2003-06-04 21:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский