Организация закрытой зоны на сайте

Форум для программистов

Сообщение scorpion » Пт авг 24, 2007 10:57 am

Уже в течение года я с еще одним разработчиком разрабатываю CMS. Одна из функций организовать закрытую зону сайта. То есть часть страниц сайта должна быть доступна только после регистрации и авторизации на сайте.

На теперешний момент это организовано так:

1. Пользователь после регистрации добавляется в общую таблицу пользователей, и ему назначается одна из групп по умолчанию. После этого администратор может назначить ему другую группу.
2. В свою очередь у каждой группы пользователей есть уровень доступа к сайту, он может просматривать общие страницы и страницы закрытой зоны, доступ к каждой из страниц можно назначать отдельно.
3. Группе может быть открыт доступ к АЦ, по АЦ тоже есть разделение уровня доступа к объектам (к примеру: новости, голосовалки, каталог продукции, настройкам системы и т.п.), некоторые пользователи могу иметь права на редактирование некоторых страниц сайта или всех.

Все это реализовано на уровне ядра системы, и, по сути, есть неотъемлемой частью CMS, если конечный заказчик не хочет иметь закрытую зону на сайте (без закрытой зоны сайт дешевле), то я ставлю все настройки закрытой зоны по умолчанию и убираю всякое упоминание о ней в шаблонах АЦ и сайта.

Но новый начальник (работает только две недели) убеждает меня, что я действую не правильно, и хочет, что бы я сделал следующие:

Создал две таблицы пользователей, в первую помещались бы пользователи имеющие доступ в АЦ, а во вторую пользователи которые регистрируются через сайт и полностью раздели их управление на сайте, доводы такие:
1. Пользователи, которые регистрируются на сайте, не смогут использовать такого имени, какое потом вдруг захочет себе взять администратор. При этом учетная запись для АЦ должна подходить и к закрытой зоне.
2. «Физическое разделение» (в разных таблицах БД) пользователей для АЦ и закрытой зоны более удобно. Хотя я предложил, что могу просто разработать отельный интерфейс управления пользователями закрытой зоны, но это я так понял, не устраивает.
3. Использование дополнительных полей для пользователей, которые регистрируются для закрытой зоны (был пример про цвет глаз и т.п.).
4. Две таблицы взломать сложней, чем одну.
5. Можно легко убрать закрытую зону из системы, если ее наличие не оплатил заказчик. До этого я просто ставил «заглушки» и убирал упоминание о закрытой зоне из шаблонов АЦ и сайта – и ни кто пока не жаловался и даже не знал о ее наличии.
6. Администратор сайта не сможет случайно назначить какому-то пользователю доступ в АЦ или что-то подобное.
Последний раз редактировалось scorpion Пт авг 24, 2007 10:58 am, всего редактировалось 1 раз.
scorpion
Ст. лейтенант
 
Сообщений: 133
Зарегистрирован: Ср янв 05, 2005 9:13 pm
Откуда: Харьков
Пункты репутации: 0

Сообщение Mafin » Пт авг 24, 2007 11:18 am

Я бы пользователей хранил в одной таблице, как и ты. Ибо что админ. что обычный юсер - один и тот же пользователь (объект), только с разными правами доступа. Из 5 доводов, приведенных твоим шефом, ни один меня не убеждает делить таблицы. И смешно звучит пункт 4. :lol:
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение Scalder » Пн авг 27, 2007 7:19 am

Гыгыгы!
Песец просто =)))
Прошу прощения, но думаю, что мне простят =).

Пользователей не надо разводить по разным таблицам, что за фигня вообще такая? =)

Модель безопастности реализуются оч. просто:
Связываються таблицы:
Пользователь - группы - роли - сис. объекты (если точнее - действие над ними)
сис. объекты - например для работы с новостями: удаление, просмотр, создание, редактирование.
В результате ты имеешь оч. гибкую и удобную систему.
Реализовать её - дело недели для нормального программиста.
На странице делаешь проверку ввиде:
isCurrentUserHasPermission(Permission p)
пришло лож - идет нафиг, пришло тру - ок.
При логине загружаешь все связки пользователя в кэш аппликейшен сервера. Поэтому проверка будет проходить оч. быстро.
При логауте грохаешь из памяти.

Эта система безопастности являеться стандартом де факто.

p.s.
Твой начальнег идет нафиг и в книжный магазин читать книжки про архитектуру приложений =)

p.p.s. Начальнег говорит, что делать, архитектор - как, программист - делает. Иначе будет полная фигня.
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение scorpion » Пн авг 27, 2007 10:13 am

Scalder, примерно так оно сейчас и организовано, есть таблица пользователей, таблица групп пользователей, таблица «разрешений», ну и конечно таблица самих объектов, к которым выставляются разрешения.
Связь осуществляется через таблицу групп, то есть права можно назначить только группе пользователей.
scorpion
Ст. лейтенант
 
Сообщений: 133
Зарегистрирован: Ср янв 05, 2005 9:13 pm
Откуда: Харьков
Пункты репутации: 0

Сообщение NickFW » Вт авг 28, 2007 1:05 am

scorpion,
ИМХО так оно и должно быть...

но вот сможешь ли ты своего начальнега дэбила убедить это уже ффторой фопрос...
NickFW
Маршал
 
Сообщений: 6178
Зарегистрирован: Чт апр 11, 2002 11:46 am
Откуда: kemerovo / siberia
Пункты репутации: 0

Сообщение scorpion » Вт авг 28, 2007 1:30 pm

Сегодня были даже уточнены требования, оказывается для каждой функциональности надо организовывать свою таблицу пользователей, к примеру, для галереи пользователи регистрируются отдельно для блога/форума/голосования тоже отдельно и управление пользователями для всех отдельное – в общем, все в том же духе. То есть по такому принципу пользователю, что бы пользоваться всей функциональностью сайта, придется регистрироваться столько раз, сколько на сайте функциональности (галереи /блога/форума/голосования). Хотя до этого момента я разграничивал права доступа на уровне « «может/не может» такая-то группа сюда заходить».

Но пришли к такому соглашению, если я смогу обеспечить следующие моменты, то смогу продолжать делать, так как сам решил:
1. Что бы ни какой даже СуперАдмин, не смог случайно и даже пожеланию переместить обычного зарегистрированного в системе пользователя в группу, которая имеет доступ к АЦ и наоборот.
2. Обеспечить полностью раздельный интерфейс управления пользователями, имеющими доступ к АЦ и пользователями, зарегистрировавшимися на сайте, желательно для «галереи /блога/форума/голосования» по отдельности.

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

P.S.: в общем я убедился что идея у меня правильная, и по сути это единственный нормальных подход к построению подобных систем, надеюсь смогу это таки доказать начальству.
scorpion
Ст. лейтенант
 
Сообщений: 133
Зарегистрирован: Ср янв 05, 2005 9:13 pm
Откуда: Харьков
Пункты репутации: 0

Сообщение Scalder » Вт авг 28, 2007 2:00 pm

scorpion,
Гы! =)
Это типа если ты хочешь на ff написать ЛС - регься ещё раз, прочитат - регься, редактировать сообщение - регься... ппц!!!!

1. Случайно он может выдернуть шнурок питания сервера, и по воле случая глюкнет в момент переключения на акк. ИБС и подаст меньшый/большый ток и поэтому глюкнет винт перепишет страницу в которой находилась другая инфа. И именно эта инфа будет той которая отвественна за доступ к другому разделу =)))))
А вообще админ всегда может ручками зайти на SQL сервер и поправить, что ему надо - тут защиты нет - на то он и админ.

2. А в чем пробелма?

Да идея у тебя правильная и разные таблицы - это мега глюк!
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение scorpion » Вт авг 28, 2007 2:29 pm

Scalder писал(а):scorpion,
Гы! =)
Это типа если ты хочешь на ff написать ЛС - регься ещё раз, прочитат - регься, редактировать сообщение - регься... ппц!!!!

Типа того и надо, доводы такие типа «блог/форум» не имеет отношение, к примеру, к «галереи» даже в рамках одного сайта.

<!--quoteo--><div class='quotetop'>Цитата</div><div class='quotemain'><!--quotec-->
2. А в чем пробелма?
<!--QuoteEnd--></div><!--QuoteEEnd-->
Тут как раз проблемы и нет, в настройках каждого из модуля можно расставлять права для групп пользователей.
Последний раз редактировалось scorpion Вт авг 28, 2007 2:30 pm, всего редактировалось 1 раз.
scorpion
Ст. лейтенант
 
Сообщений: 133
Зарегистрирован: Ср янв 05, 2005 9:13 pm
Откуда: Харьков
Пункты репутации: 0

Сообщение Scalder » Ср авг 29, 2007 6:57 am

scorpion,
В то время как весь мир приходит в OpenID, GoogleID(или как там его)
Когда один акк. работает на нескольких сайтах.

Вы пошли противоположным путем! =)
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron