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

Форум PHP

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

 

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

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

тема: про сессии
 
 автор: localGhost   (17.02.2005 в 06:34)   письмо автору
 
 

открыта два окна, у одного одно имя сессии у другого другое, так? можно ли... вернее сложно ли зная имя сессии первого окна, сделать так чтоб имя второго стало таким же как и у первого? т.е. не просто допустим передать через гет что мол сид=тому-то, а в теле страницы допустим вывести SESS_ID и чтоб показало имя первого окна?

попрос по сути касаеться безопасности доступа.

надеюсь понятно изъяснился ))

   
 
 автор: cheops   (17.02.2005 в 07:34)   письмо автору
 
   для: localGhost   (17.02.2005 в 06:34)
 

Хм... вообще-то SID сессий часто автоматически передаётся через cookie и для одного посетителя остаётся постоянным, сколько бы страниц он не открыл. Но можно явно указывать идентификатор сессии при помощи функции session_name
<?php
$sid 
session_name("WebSession");
session_start();
?>

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

   
 
 автор: localGhost   (17.02.2005 в 07:47)   письмо автору
 
   для: cheops   (17.02.2005 в 07:34)
 

я собственно к чему этот вопрос задал: просто тут думал как можно отсечь несанкционированный доступ, и пришла в голову следующая идея: ведь для каждого открытого окна браузера сид будет уникальным, значит есть в сессии переменная допутим check, в нее мы ложим (если еще не положили) зашифрованное имя текущей сессии, далее при переходе на следующую страницу, мы расшифровываем эту переменную и сверяем ее с настоящим именем сессии окна. Если все происходит в одном и том же окне, то значения будут равны... а если в разных окнах.. тут начинаються вопросы....... можно ли это все будет подделать.....

   
 
 автор: cheops   (17.02.2005 в 08:23)   письмо автору
 
   для: localGhost   (17.02.2005 в 07:47)
 

Хм... так зачем что-то шифровать, если имя сессии уникально и живёт она не долго, после некоторого времени требуется повторная идентификация. Если сессия крадётся http://www.softtime.ru/info/articlephp.php?id_article=36, то она попадет злоумышленику вместе с шифрованным значением, поэтому мне кажется здесь ничего шифрование не даст...

   
 
 автор: localGhost   (17.02.2005 в 08:48)   письмо автору
 
   для: cheops   (17.02.2005 в 08:23)
 

>то она попадет злоумышленику вместе с шифрованным значением,
>поэтому мне кажется здесь ничего шифрование не даст...

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

   
 
 автор: cheops   (17.02.2005 в 08:58)   письмо автору
 
   для: localGhost   (17.02.2005 в 08:48)
 

Число открытых окон наверное не получится проконтролировать...

   
 
 автор: localGhost   (17.02.2005 в 09:07)   письмо автору
 
   для: cheops   (17.02.2005 в 08:58)
 

а если пасти по ip адресам: допустим контролировать айпи с которым пользователь выходит в инет, но тут надо получаеться проверять: вдруг это допустим локальная сеть и злоумышленик сидит на соседнем компе... тогда айпи адреса будут одинаковые... но ведь внутренние адреса локальной сети буду разные... как их определить?

   
 
 автор: Valeri   (17.02.2005 в 10:00)   письмо автору
 
   для: localGhost   (17.02.2005 в 09:07)
 

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

   
 
 автор: localGhost   (17.02.2005 в 10:09)   письмо автору
 
   для: Valeri   (17.02.2005 в 10:00)
 

при авторизации пользователя в сессию кладем зашифрованную строчку состоящую из ip адреса и имени сессии (для верности), и потом при загрузке страниц просто проверяем будет ли совпадать расшифрованные айпи адреса и действительные адреса пользователя. Если не будут - тогда перенапрявляем на страницу авторизации или просто закрываем доступ... кому как нравиться.. Т.е. пользователь который добросовестно авторизовался будет спокойно работать дальше, а тот кто спер сессию отравиться на три русских буквы....

   
 
 автор: Valeri   (17.02.2005 в 10:54)   письмо автору
 
   для: localGhost   (17.02.2005 в 10:09)
 

тогда к чему проверять сколько открыто окон, раз идет привязка по айпи, не совпало при проверки и отправился чел туда куда его пошлешь :)

   
 
 автор: localGhost   (17.02.2005 в 11:02)   письмо автору
 
   для: Valeri   (17.02.2005 в 10:54)
 

да нет... про кол-во открытых окон речь не шла... я наверно неправильно выразился.. речь шла о том чтобы определить ваабще был ли доступ несанкционированный... (просто привязал неудчно к кол-ву окон)..... но кажеться все таки выход нашел...
НО: можно ли подделать айпи?
и еще: как все таки определить айпи если комп в сети локальной включен.....

   
 
 автор: cheops   (17.02.2005 в 18:49)   письмо автору
 
   для: localGhost   (17.02.2005 в 11:02)
 

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

   
 
 автор: localGhost   (18.02.2005 в 03:18)   письмо автору
 
   для: cheops   (17.02.2005 в 18:49)
 

так ip будет записываться на момент авторизации и проверяться в течении текущей сессии...... не думаю что пока те 10 - 20 мин. пользователь работает в системе вдруг резко измениться айпи......

З.Ы. так как определить какой айпи у пользователя внутри локальной сети?
З.З.Ы. и еще: как определить айпи определенного домена?

   
 
 автор: cheops   (18.02.2005 в 12:21)   письмо автору
 
   для: localGhost   (18.02.2005 в 03:18)
 

>так как определить какой айпи у пользователя внутри локальной сети?
1) IP-адрес пользователя в локальной сети можно узнать из переменной окружения HTTP_X_FORWARDED_FOR (только не каждый брендмауэр выдаёт эту информацию)
<?php
  
// Если подсеть доступна, извлекаем её
  
$forward getenv(HTTP_X_FORWARDED_FOR);
?>


>и еще: как определить айпи определенного домена?
2) Для этого предназначена функция gethostbyname
<?php
  $ip 
gethostbyname('www.softtime.ru');
  echo 
$ip;
?>

   
Rambler's Top100
вверх

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