Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Безопасностна ли сессия?
 
 автор: Dazzl   (29.04.2013 в 13:41)   письмо автору
 
 

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

  Ответить  
 
 автор: confirm   (29.04.2013 в 14:03)   письмо автору
 
   для: Dazzl   (29.04.2013 в 13:41)
 

Пользователь всегда может узнать id своей сессии, но это и не должно являться для него тайной. Данные из сессии пользователь не может получить, если только вы сами на его запрос не вывалите ему их.

Но сторонний пользователь, узнав каким либо образом id сессии другого пользователя может подключиться к ней. Но он может только пользоваться "услугами" этой сессии, как либо навредить, но прочитать ее данные по своей инициативе также не может как и ее владелец.

  Ответить  
 
 автор: Sfinks   (29.04.2013 в 14:06)   письмо автору
 
   для: Dazzl   (29.04.2013 в 13:41)
 

> может ли клиент подменить данные в сессии?
нет

> может ли узнать какие сессии участвуют на данный момент?
нет

> надежно ли это?
Теоретически - да.
Но вы отдаете пользователю ID сессии, а значит у него всегда есть шанс его прое... профукать.
Тогда тот, кто увел ID сессии может им воспользоваться и получить доступ к данным.
Следовательно.
Если "важные данные" важны для вас и сервера, то я бы еще в дополнение к сессии сделал привязку по IP.
Если данные важны для пользователя, то пусть он сам и отвечает за то, чтоб у него не было вирусов.
Единственное - не передавайте ID сессии в строке запроса. Иначе при внешних редиректах SID будет на чужом сайте в $_SERVER['HTTP_REFERER'].

  Ответить  
 
 автор: Dazzl   (29.04.2013 в 14:18)   письмо автору
 
   для: Sfinks   (29.04.2013 в 14:06)
 

Спасибо за инфо обоим! а как зделать привязку по ip? просто алгоритм в нескольких словах опишите если не трудно

  Ответить  
 
 автор: Sfinks   (29.04.2013 в 14:35)   письмо автору
 
   для: 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'];
  
// продолжаете работу

  Ответить  
 
 автор: confirm   (29.04.2013 в 14:36)   письмо автору
 
   для: Sfinks   (29.04.2013 в 14:35)
 

Если бы только IP всегда передавался и был действительно уникален.

  Ответить  
 
 автор: Sfinks   (29.04.2013 в 14:38)   письмо автору
 
   для: confirm   (29.04.2013 в 14:36)
 

Да, и это не 100% гарантии.
Но вероятность, что и юзер посеит SID и его IP совпадет с IP злоумышленника резко падает.

  Ответить  
 
 автор: confirm   (29.04.2013 в 14:44)   письмо автору
 
   для: Sfinks   (29.04.2013 в 14:38)
 

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

  Ответить  
 
 автор: Sfinks   (29.04.2013 в 14:51)   письмо автору
 
   для: confirm   (29.04.2013 в 14:44)
 

Думаю в цифрах мы вычислять вероятность не будем? =)
А в принципе - это очевидно.
Если злоумышленник, укравший SID, не находится в той же самой локальной сети, то все - IP другой.

  Ответить  
 
 автор: confirm   (29.04.2013 в 14:53)   письмо автору
 
   для: Sfinks   (29.04.2013 в 14:51)
 

А если находится?
IP также ненадежен, как и честное слово )

  Ответить  
 
 автор: Sfinks   (29.04.2013 в 15:54)   письмо автору
 
   для: confirm   (29.04.2013 в 14:53)
 

Разница в понятиях "надежно" и "вероятность".

Вы можете утверждать, что кража SID возможна ТОЛЬКО в пределах локальной сети?
Нет.
Значит в некоторых случаях проверка IP спасет.

Значит ВЕРОЯТНОСТЬ в любом случае меньше.

  Ответить  
 
 автор: confirm   (29.04.2013 в 16:25)   письмо автору
 
   для: Sfinks   (29.04.2013 в 15:54)
 

А почему она не возможна, если я могу просмотреть "потроха" соседа во время его отсутствия?
Не смешите, если еще жива привычка приклеивать на монитор пароли свои, то уж...

  Ответить  
 
 автор: Sfinks   (30.04.2013 в 11:13)   письмо автору
 
   для: confirm   (29.04.2013 в 16:25)
 

Вы как-то не правильно читаете...
Я уж и выделил ключевые слова большими буквами...
А вы все равно не на те упор делаете.
Ладно, проехали.

  Ответить  
 
 автор: confirm   (30.04.2013 в 11:51)   письмо автору
 
   для: Sfinks   (30.04.2013 в 11:13)
 

Виноват, извиняюсь. )
Я все о своем думал, что надежность в данном случае понятие относительное, вот и получилось.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования