|
|
|
| Здравствуйте, такой вопрос можно ли доверять сессии? т.е. может ли клиент подменить данные в сессии? и может ли узнать какие сессии участвуют на данный момент? просто у меня через сессию передаются достаточно важные данные, и хотелось бы знать надежно ли это? | |
|
|
|
|
|
|
|
для: Dazzl
(29.04.2013 в 13:41)
| | Пользователь всегда может узнать id своей сессии, но это и не должно являться для него тайной. Данные из сессии пользователь не может получить, если только вы сами на его запрос не вывалите ему их.
Но сторонний пользователь, узнав каким либо образом id сессии другого пользователя может подключиться к ней. Но он может только пользоваться "услугами" этой сессии, как либо навредить, но прочитать ее данные по своей инициативе также не может как и ее владелец. | |
|
|
|
|
|
|
|
для: Dazzl
(29.04.2013 в 13:41)
| | > может ли клиент подменить данные в сессии?
нет
> может ли узнать какие сессии участвуют на данный момент?
нет
> надежно ли это?
Теоретически - да.
Но вы отдаете пользователю ID сессии, а значит у него всегда есть шанс его прое... профукать.
Тогда тот, кто увел ID сессии может им воспользоваться и получить доступ к данным.
Следовательно.
Если "важные данные" важны для вас и сервера, то я бы еще в дополнение к сессии сделал привязку по IP.
Если данные важны для пользователя, то пусть он сам и отвечает за то, чтоб у него не было вирусов.
Единственное - не передавайте ID сессии в строке запроса. Иначе при внешних редиректах SID будет на чужом сайте в $_SERVER['HTTP_REFERER']. | |
|
|
|
|
|
|
|
для: Sfinks
(29.04.2013 в 14:06)
| | Спасибо за инфо обоим! а как зделать привязку по ip? просто алгоритм в нескольких словах опишите если не трудно | |
|
|
|
|
|
|
|
для: Dazzl
(29.04.2013 в 14:18)
| | В ту же сессию сохраняете IP пользователя и в начале скрипта, после старта сессии проверяете. Если не совпадает - выходите.
<?php
session_start();
if( key_exists( 'ip', $_SESSION )
&& $_SESSION['ip'] != $_SERVER['REMOTE_ADDR']
) exit('IP изменился');
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
// продолжаете работу
|
| |
|
|
|
|
|
|
|
для: Sfinks
(29.04.2013 в 14:35)
| | Если бы только IP всегда передавался и был действительно уникален. | |
|
|
|
|
|
|
|
для: confirm
(29.04.2013 в 14:36)
| | Да, и это не 100% гарантии.
Но вероятность, что и юзер посеит SID и его IP совпадет с IP злоумышленника резко падает. | |
|
|
|
|
|
|
|
для: Sfinks
(29.04.2013 в 14:38)
| | И чем же вероятность уменьшается, если масса пользователей сети, это N пользователей локальной сети с общим выходом в интернет. | |
|
|
|
|
|
|
|
для: confirm
(29.04.2013 в 14:44)
| | Думаю в цифрах мы вычислять вероятность не будем? =)
А в принципе - это очевидно.
Если злоумышленник, укравший SID, не находится в той же самой локальной сети, то все - IP другой. | |
|
|
|
|
|
|
|
для: Sfinks
(29.04.2013 в 14:51)
| | А если находится?
IP также ненадежен, как и честное слово ) | |
|
|
|
|
|
|
|
для: confirm
(29.04.2013 в 14:53)
| | Разница в понятиях "надежно" и "вероятность".
Вы можете утверждать, что кража SID возможна ТОЛЬКО в пределах локальной сети?
Нет.
Значит в некоторых случаях проверка IP спасет.
Значит ВЕРОЯТНОСТЬ в любом случае меньше. | |
|
|
|
|
|
|
|
для: Sfinks
(29.04.2013 в 15:54)
| | А почему она не возможна, если я могу просмотреть "потроха" соседа во время его отсутствия?
Не смешите, если еще жива привычка приклеивать на монитор пароли свои, то уж... | |
|
|
|
|
|
|
|
для: confirm
(29.04.2013 в 16:25)
| | Вы как-то не правильно читаете...
Я уж и выделил ключевые слова большими буквами...
А вы все равно не на те упор делаете.
Ладно, проехали. | |
|
|
|
|
|
|
|
для: Sfinks
(30.04.2013 в 11:13)
| | Виноват, извиняюсь. )
Я все о своем думал, что надежность в данном случае понятие относительное, вот и получилось. | |
|
|
|