ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Аутентификация. Настройка прав
  #1  
Старый 07.12.2009, 19:21
Аватар для dimash
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме:
41875

Репутация: 4
По умолчанию Аутентификация. Настройка прав

Каким образом построить систему прав? Свой-чужой, администратор - пользователь - редактор. Как это грамотно сделать, не используя булевую алгебру.
 
Ответить с цитированием

  #2  
Старый 07.12.2009, 19:50
Аватар для whexp
whexp
Познающий
Регистрация: 30.11.2009
Сообщений: 97
Провел на форуме:
333264

Репутация: 80
По умолчанию

Что значит не используя булеву алгебру? Ее для того и придумали, чтобы использовать. В таблице users создаешь колонку, например, is_admin, которое проверяешь, когда хочешь, чтобы к данной странице имел доступ только админ. Так же можешь создать колонку, например perms. Там пишешь строки формата 000, где первый символ принимает значение 1, если пользователь админ. Второй символ принимает значение 1, если пользователь имеет право создавать новости, и 3 символ, если он имеет право оставлять комментарии. Дальше постоянно проверяешь права при доступам к страницам.

В итоге, если пользователь имеет право создавать новости и оставлять комментарии, но он не админ, то в колонке будет 011
 
Ответить с цитированием

  #3  
Старый 07.12.2009, 22:21
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

Или создай отдельную таблицу с id привелигированых пользователей.
 
Ответить с цитированием

  #4  
Старый 07.12.2009, 22:26
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Что за херню вы советуете? 17 век чтоли на дворе?
добавь с таблицу с пользователями колонку group_id.Далее скрипт, например group.php
и его тыинклудиш во всех местах.Там определяеш методы,функции права для данной группы пользователя,там же задаеш константу,например USERGROUP; равную group_id в таблице.И сравниваеш при операцияъ что куда,все метобы определены,ну и т.ж.
Помоему самый кошерный метод.
А вариант с отедльной таблицей это дооо.
 
Ответить с цитированием

  #5  
Старый 07.12.2009, 22:40
Аватар для POS_troi
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

Возьми и посмотри реализацию в том-же DLE и все будет ясно и понятно. развели тут демагогию =)
 
Ответить с цитированием

  #6  
Старый 07.12.2009, 23:30
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

2m0Hze
Сколько людей столько и мнений... Считать "херней" то, что удобнее этому человеку - быдло замашки. Реализаций много =\
Цитата:
Помоему самый кошерный метод.
этим ты высказал свое мнение.
Лично мне удобней и наглядней работать с отдельной таблицей. и Выполнить лишний запрос к БД меня не смущает.
 
Ответить с цитированием

  #7  
Старый 01.01.2010, 14:11
Аватар для dimash
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме:
41875

Репутация: 4
По умолчанию

Цитата:
Сообщение от m0Hze  
Что за херню вы советуете? 17 век чтоли на дворе?
добавь с таблицу с пользователями колонку group_id.Далее скрипт, например group.php
и его тыинклудиш во всех местах.Там определяеш методы,функции права для данной группы пользователя,там же задаеш константу,например USERGROUP; равную group_id в таблице.И сравниваеш при операцияъ что куда,все метобы определены,ну и т.ж.
Помоему самый кошерный метод.
А вариант с отедльной таблицей это дооо.
Поподробнее можно, пожалуйста.
 
Ответить с цитированием

  #8  
Старый 02.01.2010, 00:42
Аватар для Forcer
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Цитата:
Сообщение от LStr1ke  
2m0Hze
Сколько людей столько и мнений... Считать "херней" то, что удобнее этому человеку - быдло замашки. Реализаций много =\

этим ты высказал свое мнение.
Лично мне удобней и наглядней работать с отдельной таблицей. и Выполнить лишний запрос к БД меня не смущает.
Ты не прав. Принципиальное отличие мнения m0Hze от вашего с whexp в том, что вы впринципе не знаете и не понимаете как это сделать правильно и от того начинаете изобретать велосипед и советовать откровенный булшит, прикрываясь тем, что это ваше мнение и вам так удобнее. m0Hze, в свою очередь, говорит все почти правильно, но есть пара недостатков. Вот как это нужно делать на самом деле:
  • Идея с группами пользователей абсолютна верна. Но, кроме добавления поля group_id в таблицу пользователей, нужно создать таблицу groups. В которой кроме очевидных полей(id, name, dscription) будет поле permissions, в котором будет хранится максимально возможно уровень доступа для данной группы. Например, user/moder/admin 10/20/30. Когда пользователь логинится, вся информация о нем, включая permissions, хранится в сессии. В каждый файл вставляется group.php(хотя я бы назвал по-другому, permissions.php, например), задача которого определять, имеет ли пользователь право на выполнение данного скрипта. Делает он это следующим образом - в каждом файле зашита константа, определяющая уровень доступа, который необходим к файлу. Эта константа сверяется с уровнем доступа пользователя, который у нас хранится в сессии. Так же осуществляется контроль доступа к методу/функции - для каждого метода/функции определен необходимый уровень доступа - он сверяется с permission'ами пользователя.
 
Ответить с цитированием

  #9  
Старый 03.01.2010, 18:48
Аватар для dimash
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме:
41875

Репутация: 4
По умолчанию

Цитата:
Сообщение от Forcer  
Идея с группами пользователей абсолютна верна. Но, кроме добавления поля group_id в таблицу пользователей, нужно создать таблицу groups. В которой кроме очевидных полей(id, name, dscription) будет поле permissions, в котором будет хранится максимально возможно уровень доступа для данной группы.
Зачем в таблице groups необходимы поля name и description?
Цитата:
Например, user/moder/admin 10/20/30.Когда пользователь логинится, вся информация о нем, включая permissions, хранится в сессии.
user/moder/admin 10/20/30 - имеется ввиду, что косметически можно писать как угодно, например можно писать 1,2,3? Или что-то другое.

Цитата:
В каждый файл вставляется group.php(хотя я бы назвал по-другому, permissions.php, например), задача которого определять, имеет ли пользователь право на выполнение данного скрипта. Делает он это следующим образом - в каждом файле зашита константа, определяющая уровень доступа, который необходим к файлу. Эта константа сверяется с уровнем доступа пользователя, который у нас хранится в сессии.
Очевидно, определять константу не обязательно. Достаточно просто сравнить переменную сессии с каким-то значением, правильно? Вы имели ввиду это под словом константа?
Цитата:
Так же осуществляется контроль доступа к методу/функции - для каждого метода/функции определен необходимый уровень доступа - он сверяется с permission'ами пользователя.
А как проходить реализация контроля доступа к функции? Сама последовательность действий.

Последний раз редактировалось dimash; 03.01.2010 в 18:51..
 
Ответить с цитированием

  #10  
Старый 03.01.2010, 19:38
Аватар для Forcer
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Цитата:
Сообщение от dimash  
Зачем в таблице groups необходимы поля name и description?
name - название группы. Да, можно ограничиться 2мя полями id и permission, но так таблица будет не очень понятна. Человеческие названия групп дают лучшее понимание сути данных в таблице, позволяют писать более простые и человеческие запросы к бд, а значит меньше вероятность допустить ошибку. И вообще, можно мапить пользователя не к id группы, а к названию. Description - описание, можно не добавлять.

Цитата:
Сообщение от dimash  
user/moder/admin 10/20/30 - имеется ввиду, что косметически можно писать как угодно, например можно писать 1,2,3? Или что-то другое.
Да, можно, но лучше оставлять некоторый диапазон между соседними значениями. Это пригодится в будущем, если мы вдруг захотим добавить особую группу, например, между модером и админом - нам придется делать гораздо меньше изменений, чем если бы значения шли друг за другом(1,2,3).


Цитата:
Сообщение от dimash  
Очевидно, определять константу не обязательно. Достаточно просто сравнить переменную сессии с каким-то значением, правильно? Вы имели ввиду это под словом константа?
Какое-то значение - это и есть константа. Информация об уровне доступа, который необходим для метода хранится в самом методе в виде константы.

Цитата:
Сообщение от dimash  
А как проходить реализация контроля доступа к функции? Сама последовательность действий.
Вообще, было бы хорошо, если бы контроль доступа определял некоторый фрэймворк и не приходилось затрагивать код методов. Но я не знаю, есть ли на php такое. В простейшем случае в начале метода нужно вызывать функцию/метод checkPermission, в который передается константа-число, определяющая минимально возможный уровень доступа к данному методу. Этот метод checkPermission общий для всего приложения. Он берет из сессии права пользователя и сверяет с переданным ему в качестве параметра значения. Если переданное ему значение больше/меньше(абсолютно безралично как будут права распределяться user/moder/admin - 10/20/30 или 30/20/10) значения из сесии - то бросается исключение(доступ запрещен) в противном случае метод checkPermission завершает работу и работу продолжает метод, для которого и осуществлялся контроль доступа.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Отказ от прав администратора в системе закрывает 92% уязвимостей Microsoft Bloodmoon Мировые новости 2 06.02.2009 14:06
Настройка USB ADSL модема на чипе Conexant AccessRunner в ОС Linux L0rd_Ha0S Авторские статьи 11 10.12.2007 16:47
Программы для работы с железом. Часть I – настройка видеокарт _GaLs_ Аппаратное обеспечение 2 20.12.2006 01:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ