Вопрос по проверке доступа к странице

P
На сайте с 16.06.2008
Offline
14
656

Пишу cms, встал перед дилеммой между двумя способами проверки доступа пользователя к странице.

Первый очень заманчивый - при авторизации пользователя, загрузить в его сессию названия всех страниц и путей к ним, к которым у него есть доступ. Затем при выполнении кода страницы просто искать путь/название выполняемой страницы в списке доступных страниц, который всегда доступен из переменной сессии. Если путь/страница не найдены, - отказывать в доступе.

Второй способ - это при каждой загрузке выполняемой страницы делать запрос к БД и проверять есть ли у пользователя доступ к этой странице.

Первый способ позволяет создавать страницы с количеством запросов к БД = 0. Второй - минимум один. Но вот не знаю, насколько "нормально" хранить путь/страница в сессии?

Что посоветуете?

AX
На сайте с 20.09.2008
Offline
133
#1

Все прекрасно храниться =) Вопрос - а вы данные пользоватлей как собираетесь хранить? БД или файлы? А вообще, конечно делать так, как вам проще и удобнее. Можете прочитать статьи по безопасности в сессиях PHP.

J
На сайте с 03.07.2006
Offline
122
#2

естесственно второй:)

своим одним завпросом вы не облегчите работу сервера))

Лучше оптимизируйте запросы к БД, будет эффективнее;)

Тимонин Александр, Тольятти. Вконтакте https://vk.com/my.face (https://vk.com/my.face) Управление ссылками на своих сайтах + Контекстные ссылки (/ru/forum/489616) Скрипты, недорого отзывы от форумчан (/ru/forum/268922)
topy
На сайте с 28.03.2006
Offline
142
#3

Храните в сессии идентификатор, который обрабатывайте на каждой странице и определяйте можно или ни-ни.

По крайне мере в большинстве статей по безопасности описывают именно так...

Я почему-то согласен.

И вообще, помните??? "Никогда не доверяйте данным, пришедшим от пользователя"....

Это я к тому, что идентификатор шифруете вы и ваша база его содержит, а открытые пути в сессии хранить - ну не знаю, так ИМХО и до админки недалеко.

Новости коротко и ясно (https://subnews.ru)
P
На сайте с 16.06.2008
Offline
14
#4

ApocX, в БД.

Идентификатор в сессии это само сабой.

Из достоинств первого способа можно отметить очень быструю проверку доступа к странице и возможность создания страниц без запросов к БД.

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

Какие ещё могут быть достоинства и недостатки?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий