ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

19.01.2009, 02:03
|
|
Участник форума
Регистрация: 17.01.2008
Сообщений: 170
Провел на форуме: 1608606
Репутация:
105
|
|
для использование явой и не пахнет. #7964 пост прочитай, там все понятно.
|
|
|

19.01.2009, 03:27
|
|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
Встала такая задача
нужно написать небольшой скриптик который будет взависимоти от уровня доступа пользователя разрешать ему доступ к редактированию конкретных разделов либо наоброт запрещать.
Такой вопрос...как это лучше реализовать?
пока алогритм такой
пользователь логинится,в сесиии деожу его уровень доступа,на кажой паге которая нужна проверяю нужный уровень доступа либо да либо нах )
безопасно ли хранить в сесии? есть другой какойнить способ? может там класс писать или функцию
спс.
|
|
|

19.01.2009, 04:36
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Если узеры храняться в муслке,просто добавь ячейку с названием скажем "Group" или что-то в этом роде и в дальнейшем при заходе на определенную страницу берешь оттуда его уровень доступа и пускаешь или наоборот не пускаешь...
|
|
|

19.01.2009, 04:45
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Сообщение от svesve
Встала такая задача
нужно написать небольшой скриптик который будет взависимоти от уровня доступа пользователя разрешать ему доступ к редактированию конкретных разделов либо наоброт запрещать.
Такой вопрос...как это лучше реализовать?
пока алогритм такой
пользователь логинится,в сесиии деожу его уровень доступа,на кажой паге которая нужна проверяю нужный уровень доступа либо да либо нах )
безопасно ли хранить в сесии? есть другой какойнить способ? может там класс писать или функцию
спс.
Сообщение от rudvil
Если узеры храняться в муслке,просто добавь ячейку с названием скажем "Group" или что-то в этом роде и в дальнейшем при заходе на определенную страницу берешь оттуда его уровень доступа и пускаешь или наоборот не пускаешь...
если нет http-авторизации, неважно, где ты будешь хранить уровень доступа, в сессии напрямую или каждый раз брать из базы (что на мой взгляд гораздо хуже, каждый F5 - новый запрос к базе, лишняя нагрузка). Если перехватят куки - так или иначе почитают, что скрыто. Независимо от метода проверки. Вывод - конечно в сессии проще хранить, или в любом другом параметре кукисов. Другое дело просто хранить можно так, чтобы не было понятно, что эта цыферька означает. Хотя и это тоже при перехвате кук никакого особого значения уже иметь не будет. Главное админку грамотно запрятать и защитить (исключительно http-авторизация, через .htaccess и .htpasswd
|
|
|

19.01.2009, 07:15
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Сообщение от svesve
Встала такая задача
нужно написать небольшой скриптик который будет взависимоти от уровня доступа пользователя разрешать ему доступ к редактированию конкретных разделов либо наоброт запрещать.
Такой вопрос...как это лучше реализовать?
пока алогритм такой
пользователь логинится,в сесиии деожу его уровень доступа,на кажой паге которая нужна проверяю нужный уровень доступа либо да либо нах )
безопасно ли хранить в сесии? есть другой какойнить способ? может там класс писать или функцию
спс.
Юзай принцип ACL (Access Control List). На каждое атомарное действие (view/insert/update/delete) над каждым объектом задай уровни доступа, которые будут опираться на GroupID юзера и храниться в базе. Затем одним простым запросом вытаскивай всю таблицу ACL и сверяй права. Можешь реализовать кэширование, если напрягает постоянное обращение к базе.
http://ru.wikipedia.org/wiki/ACL - оно. Применяй эту концепцию к ООП.
UPD: Данный подход позволяет в дальшейшем легко управлять правами групп через админский интерфейс, не редактируя исходники.
UPD2: Надеюсь ты в своей CMS используешь ООП, в противном случае я тебе сочувствую.
Последний раз редактировалось [x26]VOLAND; 19.01.2009 в 07:39..
|
|
|

19.01.2009, 09:24
|
|
Познающий
Регистрация: 13.12.2008
Сообщений: 54
Провел на форуме: 217810
Репутация:
80
|
|
хранить в сессии ua+ip
|
|
|

19.01.2009, 11:48
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Юзай принцип ACL (Access Control List). На каждое атомарное действие (view/insert/update/delete) над каждым объектом задай уровни доступа, которые будут опираться на GroupID юзера и храниться в базе. Затем одним простым запросом вытаскивай всю таблицу ACL и сверяй права. Можешь реализовать кэширование, если напрягает постоянное обращение к базе.
http://ru.wikipedia.org/wiki/ACL - оно. Применяй эту концепцию к ООП.
UPD: Данный подход позволяет в дальшейшем легко управлять правами групп через админский интерфейс, не редактируя исходники.
UPD2: Надеюсь ты в своей CMS используешь ООП, в противном случае я тебе сочувствую.
Всё верно говоришь, только я бы не стал задавать уровни доступа над каждым объектом - слишком много мета-описания для однотипных объектов... Слишком этом громоздко в каждой странице проверять права доступа и т.д.). Лучше хранить уровни доступа для групп объектов - ну там статьи, новости, файлы, профили пользователей и т.д., т.е. права определяют не отдельные объекты, а группу однотипных объектов.
|
|
|

19.01.2009, 12:46
|
|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
данные о правах
PHP код:
$query = "SELECT users.user_id,users.right_id,rights.* FROM users,rights WHERE users.right_id=rights.right_id and login='$name'";
$res = mysql_query($query) or trigger_error(mysql_error().$query);
if ($row = mysql_fetch_assoc($res)) {
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['priv']=$row['right_id'];
}
в header.inc.php
прописываю конкретно какие права у юзера
PHP код:
mysql_connect('localhost','calendar','123123') OR DIE("Не могу создать соединение ");
mysql_select_db('smart_calendar') or die(mysql_error());
$query = "SELECT * FROM `rights` where right_id='$_SESSION[priv]'";
$res=mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($res)){
$_SESSION['rights']=$row['rights'];
$_SESSION['holidays']=$row['holidays'];
$_SESSION['structure']=$row['structure'];
$_SESSION['users']=$row['users'];
а далее на каждой странице идет проверка
PHP код:
if($_SESSION['holidays']=='1'){
это вообще правильно все?
З.Ы. это не кмска )
|
|
|

19.01.2009, 12:57
|
|
Участник форума
Регистрация: 28.07.2008
Сообщений: 158
Провел на форуме: 728470
Репутация:
115
|
|
Насколько я понимаю, при взломе сайта на reverse-ip сессии твоих пользователей можно будет редактировать, так что я бы сверялся с БД каждый раз когда нужно проверить права.
|
|
|

19.01.2009, 13:02
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Насколько я понимаю, при взломе сайта на reverse-ip сессии твоих пользователей можно будет редактировать, так что я бы сверялся с БД каждый раз когда нужно проверить права.
prescott, при чём тут reverse-ip? Глупый набор слов не имеющий никакого смысла...
svesve, конечно это не эталон программирования, но вполне работоспособная реализация.
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|