Cuby: Шадик

Программирование => Java => Тема начата: walery от 05 Июля 2009, 23:40:55



Название: Права доступа
Отправлено: walery от 05 Июля 2009, 23:40:55
Как оптимально организовать систему прав доступа на примере форума или блогера?
Как вариант:
- список функций
- название ролей
Для каждой роли можно установить или отменить доступ к той или иной функции.
Роль1
  • Чтение = ДА/НЕТ
  • Запись = ДА/НЕТ
Роль2
  • Чтение=ДА/НЕТ
  • Запись=ДА/НЕТ
И далее каждому пользователю присваисается соотсветсвующая роль.


Название: Re: Права доступа
Отправлено: wivern от 10 Июля 2009, 11:12:32
Вот, например, неплохо изложено (http://slonopotamus.org/java_security).


Название: Re: Права доступа
Отправлено: walery от 10 Июля 2009, 14:29:00
Для вступительной части курсовика подходяще. На самом деле есть и путная документация. http://java.sun.com/javase/6/docs/api/ (http://java.sun.com/javase/6/docs/api/) Но дело не в этом.
Это всё из области "каким образом можно делать". В нашем случае надо определить "как мы это будем делать".


Название: Re: Права доступа
Отправлено: wivern от 15 Июля 2009, 16:40:00
Для вступительной части курсовика подходяще. На самом деле есть и путная документация. http://java.sun.com/javase/6/docs/api/ (http://java.sun.com/javase/6/docs/api/) Но дело не в этом.
Это всё из области "каким образом можно делать". В нашем случае надо определить "как мы это будем делать".
Эээ, нет. Это другое. В общем, в мире java для организации безопастности приложения есть два подхода:  (в прошлом acegisecurity) и [url=http://java.sun.com/javase/6/docs/technotes/guides/security/JAAS (http://static.springsource.org/spring-security/site/Spring-security [/url).
Вопрос о том, что лучше сильно зависит от условий использования. Я обычно испоьзую Spring-security и собственные расширения и пока не жаловался.

А приведенная ссылка - оно слегка не в тему, т.е там конечно безопасность но не та.


Название: Re: Права доступа
Отправлено: walery от 15 Июля 2009, 22:32:09
Сколько же у тебя безопасностей? Одна "ТА", другая "НЕ ТА" ... В основе всех с тем или иным синтаксисом лежит форма вида
Код:
hasRole
и
Код:
hasPermission
. А далее всё маркетинг и запудривание.
P.S. вот ссылочку поправил http://blog.springsource.com/2009/06/03/spring-security-300m1-released/ (http://blog.springsource.com/2009/06/03/spring-security-300m1-released/)


Название: Re: Права доступа
Отправлено: wivern от 16 Июля 2009, 17:45:11
Сколько же у тебя безопасностей? Одна "ТА", другая "НЕ ТА" ... В основе всех с тем или иным синтаксисом лежит форма вида
Код:
hasRole
и
Код:
hasPermission
. А далее всё маркетинг и запудривание.
Это заблуждение, которое может привести к большому разочарованию.
Существует множество различных инстррументов и у каждого свое предназначение.
Можно конечно побриться топором, но бритвой лучше и проще как-то.


Название: Re: Права доступа
Отправлено: walery от 16 Июля 2009, 18:49:39
Если научиться делать тапор, которым можно побриться, то больше ничего не понадобится, т.к. эти топоры будут стоить баснословно и по легендам называются "булатными".
Вот если по теме, то доступность может реализовываться либо на уровне интерфейса, либо на уровне ресурса.
 - Для интерфейса характерно упраление наличием кнопки доступа к ресурсу. Если доступ разрешён - кнопка есть, если доступа нет, то и кнопки нет. Всё довольно плавно и спокойно.
 - Для ресурса менее очевидно, т.к. на интерфейсе придётся показать наличие ресурса не зависимо от прав пользователя. А когда ресурс запрошен, проверить права доступа и отказать (или разрешить). Такой подход используется в удалённых системах, типа FTP. Но для WEB-приложения смотрится довольно странно. Скорее это WEB-сервис (в контексте J2EE). А  то  этот термин используется уже где попало. [довольно забавно смотреть ситуации, когда размещение на сайте контактной информации называют WEB-сервисом. типа " 8) "]


Название: Re: Права доступа
Отправлено: wivern от 16 Июля 2009, 19:40:09
тут еще следует учитывать что именно следует защитить
1. защита данных от несанкционированного доступа. в этом случае каждому объекту создается дескриптор безопасности, в котором описывается кто имеет права на доступ к объекту и какой именно доступ. т.е. на чтение, на изменение и т.п.
проверка происходит при каждом обращении к объекту.
поскольку встраивать ко проверки в каждый метод несколько утомительно, то на сегодняшний день используют технологии AOP (http://ru.wikipedia.org/wiki/%D0%90%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5).
2. защита кода от неправомерного выполнения. в этом случае для каждого из защищенных методов прописывается кто имеет право его выполнить. и при каждом обращении к методу происходит проверка. для этой цели тоже удобно использовать AOP.

защита на уровне интерфейса пользователя это довольно примитивный уровень, т.к очень просто обходится, но в сочетаниии с другими видами создает дополнительный комфорт, позволяя не перегружать интерфейс ненужными функциями.

для того, чтобы рассуждать о защите ресурсов необходимо определить понятие ресурс ибо из контекста оно не следует.


Название: Re: Права доступа
Отправлено: walery от 16 Июля 2009, 23:11:01
Под ресурсом понимается всё, что подлежит защите: файл, метод, канальное устройство ...
А вот на счёт AOP это сильно сказано. Пока в детали не вдавался, но планы есть использовать эту технологию. Как я понял для нашего применения стоит рассматривать JBoss AOP и Spring.


Название: Re: Права доступа
Отправлено: wivern от 17 Июля 2009, 15:18:12
Под ресурсом понимается всё, что подлежит защите: файл, метод, канальное устройство ...
тогда это слишком высокий уровень абстракции и общее решение даже если и существует может оказаться неподъемным.


Название: Права доступа
Отправлено: Fotoglyuck от 28 Января 2012, 04:31:39
Подскажите пожалуйста каким образом можно создать новые права доступа для ещё одного ГМа Access Level. Я знаю только что есть права для Админа100, ГМа75. А вот как сделать например левл доступа 70 и прописать туда определённые права? Сборка la2mase Interlude.


Название: Re: Права доступа
Отправлено: wivern от 28 Января 2012, 20:32:15
Подскажите пожалуйста каким образом можно создать новые права доступа для ещё одного ГМа Access Level. Я знаю только что есть права для Админа100, ГМа75. А вот как сделать например левл доступа 70 и прописать туда определённые права? Сборка la2mase Interlude.
Ну если б вы объяснили, что собственно хотите, то подсказали бы с удовольствием.
70й уровень у меня лично ассоциируется только с эльфами.


Название: Права доступа
Отправлено: Joshuasype от 29 Июня 2015, 14:39:53
Ребят я случайно изменил права доступа главному админку тоисть себе теперь я не могу добавить нового пользователя еще и изменять их.Можно что-нить сделать или нужна переустановка банлиста ?