например на своем сайте для регистрации, для разграничения прав я использую, сессии
например:
если админ то
<?php
$_SESSION['user']='1';
?>
обычный пользователь
<?php
$_SESSION['user']='2';
?>
Гость
<?php
//Сессия User не установлена
?>
В чем заключается смысл вопроса, может ли пользователь, поменять в браузере или другой программе, сессию с user на любое число, тем самым получив доступ к любым действиям на сайте???
Если да, то как хранить права пользователей, чтобы их не возможно было подделать из сессии
Спустя 45 минут, 15 секунд (5.05.2010 - 00:47) zarafar написал(а):
Если именно так, как в примере, то не может.
P.S. В общем случае не может. Хотя на криво настроенном хостинге существует вероятность подменить стандартную сессию. Но это не так просто.
Тем не менее, например в некоторых фреймворках существуют реализации сессий на БД, для обеспечения большей безопасности.
P.S. В общем случае не может. Хотя на криво настроенном хостинге существует вероятность подменить стандартную сессию. Но это не так просто.
Тем не менее, например в некоторых фреймворках существуют реализации сессий на БД, для обеспечения большей безопасности.
Спустя 58 минут, 45 секунд (5.05.2010 - 01:46) KaFe написал(а):
zarafar не обоснованный ответ, нужна более точна инфа.
Спустя 38 минут, 35 секунд (5.05.2010 - 02:24) zarafar написал(а):
KaFe не понял, что нужно обосновать ?
Вопрос был
Вопрос был
Цитата |
может ли пользователь, поменять в браузере или другой программе, сессию с user на любое число, тем самым получив доступ к любым действиям на сайте??? |
Я ответил
Цитата |
Если именно так, как в примере, то не может. |
Что обосновать ? Почему пользователь не может подделать ? Потому что пользователь не имеет доступа к файлам сессий, которые хранятся на сервере.
Или обосновать почему я написал "если" ?
Потому что, я предположил, что вы контролируете откуда берутся флаги 1,2 ваших ролей (админа, юзера) и не сделаете например глупость подомную такой:
$_SESSION['user']=$_GET['role'];
Спустя 21 час, 39 минут, 15 секунд (6.05.2010 - 00:04) KaFe написал(а):
Хм, а почему если я отключаю в браузере поддержку куков, то сессия теряется???
Спустя 2 часа, 44 минуты, 26 секунд (6.05.2010 - 02:48) zarafar написал(а):
Потому что в куках хранится идентификатор сессии (SID). У сервера хранится куча сессий, как сервер узнает, какая из них относится к конкретному пользователю? Пользователь (браузер) отправляет SID, который хранится у него в куках, серверу и сервер узнает пользователя.
Если хакер украдет куку админа сайта, то сможет представится серверу админом.
Для усиления защиты, сессию можно например привязать к IP адресу пользователя. Но это не универсальный способ. На сайтах, часто эта функция доступна в виде опции, где нибудь в личном кабинете и пользователь сам может её включить.
Если хакер украдет куку админа сайта, то сможет представится серверу админом.
Для усиления защиты, сессию можно например привязать к IP адресу пользователя. Но это не универсальный способ. На сайтах, часто эта функция доступна в виде опции, где нибудь в личном кабинете и пользователь сам может её включить.
Спустя 3 часа, 38 минут, 30 секунд (6.05.2010 - 06:27) twin написал(а):
zarafar
Цитата |
У сервера хранится куча сессий, как сервер узнает, какая из них относится к конкретному пользователю? Пользователь (браузер) отправляет SID, который хранится у него в куках, серверу и сервер узнает пользователя. |
Это не совсем так. SID конечно хранится в сессионной куке, но если куки отключены, он должен передаваться GET параметром:
Цитата |
http://phpforum.ru/index.php?PHPSESSID=57875A6F746C6544 |
Правда если session.use_trans_sid установлен в положение 1.
Вообще это довольно капризная штука и иногда вредная. Даже поисковики хапают такие адреса, что вытаскивает на обозрение всего мира идентификатор сессии. Поэтому перехват её и взлом аккаунта становится весьма элементарным занятием.
Последнее время существует тенденция запрещать эту директиву. Тогда есть два пути
1. Предупредить юзера, что нужно обязательно включить куки
2. Наплевать на 1,5 - 2% пользователей с отключенными куками.
Иногда правда есть моменты, когда на некоторых страницах необходимо принудительно завести сессию всем без исключения. Тогда на них это можно сделать своей функцией, не полагаясь на капризные настройки.
Спустя 8 часов, 38 минут, 39 секунд (6.05.2010 - 15:05) zarafar написал(а):
Цитата |
Это не совсем так. SID конечно хранится в сессионной куке, но если куки отключены, он должен передаваться GET параметром: |
Ок, я не дописал, что SID можно передавать методом GET, но
Цитата |
перехват её и взлом аккаунта становится весьма элементарным занятием. |
Спустя 3 часа, 36 минут, 17 секунд (6.05.2010 - 18:42) KaFe написал(а):
все понятно, значит могу отдыхать спокойно спс