безопасность и сессии

Rome

Новичок
безопасность и сессии

Здравствуйте,
вопрос у меня такой:
как пхп узнает каким хостом создана сессия
 

it-master

Новичок
данные хранятся в Cookie пользователя.
PHP запрашивает PHPSESSID из Cookie или $_REQUEST и дальше обращается к необходимому файлу сессии на сервере.

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

SiMM

Новичок
> как пхп узнает каким хостом создана сессия
А зачем ему это знать? Чужие куки не передаются клиентом.
 

Rome

Новичок
Автор оригинала: it-master
данные хранятся в Cookie пользователя.
PHP запрашивает PHPSESSID из Cookie или $_REQUEST и дальше обращается к необходимому файлу сессии на сервере.

возможно существуют и дополнительные механизмы защиты, но насколько я знаю сессии можно подделать зная PHPSESSID, поэтому склонен утверждать что PHPSESSID хранится на стороне пользователя со всеми вытекающими последствиями.
причем здесь куки, куки вообще могут быть отключены у юзера а сесси могут передаваться в урле типа так skript.php?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811
данные сессий в любом случае храняться или в базах данных или в файлах (по умолчанию /tmp) или в (ОЗУ) сервера, а не у клиента. Да и вопрос не в этом, а как именно пхп узнает каким хостом создана сессия.
 

vadim

Guest
Rome
А что вы понимаете под словом "хост"??
 

Rome

Новичок
Автор оригинала: vadim
Rome
А что вы понимаете под словом "хост"??
Покажу на примере
например:
в скрипте авторизации пользователей
session_start();
проверка пароля, если пароль верен в сессию пишем logged=1 и редирект на секретные данные
на секретной странице проверяем
if ($_SESSION['logged']==1)
{
// залогинен и далее по запароленым страницам
}

авторизирующий скрипт находиться на хосте vasya.bip.ru сессия пишется в /tmp
а если я запущу скрипт который тоже запишет в сессию logged=1 но находиться на petya.bip.ru
сессия тоже запишется в тот же /tmp но на секретные страницы меня не пустит
но если тот же скрипт который запишет в сессию logged=1 будет лежать на хосте vasya.bip.ru то на секр. страницы пустит
вот и вопрос как пхп определил какой хост создал сессию
или я что то недопонимаю

и еще если на серваке /tmp будет доступен на запись и чтение я же скриптом находящимся на этом же серваке могу прочитать /tmp а там окажется вдруг живая сессия, урлю например так
http://vasya.bip.ru/скрипт.php?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811 и я снова на секретной странице :( (если конечно сессия еще жива) и что получается не такая уж и хорошая защита сессии??? одни вопросы блин
 

vadim

Guest
Rome
Для сессии важен номер, как бы он не передовался. Если возникает необходиомсть открыть новую сессию, будет генерирован новый номер.
Переход на другой "хост" можно считать такой необходиомстью.
Сессии хост и незачем знать
 

Rome

Новичок
Автор оригинала: vadim
....
Сессии хост и незачем знать
вот так и Д.Бруно говорили, нафига оно тебе и зажарили, а потом оказалось-все таки она вертиться :)
разве не для этогоэтот форум, чтоб понять, помочь, указать на недостатки и исправить всем миром а? Ну или хотя бы объясните в чем я заблуждаюсь. Исправлять как будьто и нечего, а вот понять как работает распознавание "свой-чужой" хоцца. Оно конечно можно и на машине ездить не зная, что там и как крутиться, но все же лучше зная.
 

fixxxer

К.О.
Партнер клуба
никак не работает :) если нужно - сам храни в сессии ip и сравнивай
 

Rome

Новичок
Автор оригинала: fixxxer
никак не работает :) если нужно - сам храни в сессии ip и сравнивай
так уж и не работает, прежде чем спросить я сначала проверил.
При чем здесь ip, куки и прочие рассуждения, я же не спрашивал что делать, а спросил как пхп распознает хост?
Вопрос стоял так-как пхп определяет на каком хосте создана сессия. То, что определение хоста происходит это однозначно. Если можно то просто ответьте на мой вопрос без указаний что делать :) если кто то знает, а тех кто знает но молчит-прошу не беспокоить :)
 

fixxxer

К.О.
Партнер клуба
объясни, что ты имеешь в виду под словом "хост".
 

Фанат

oncle terrible
Команда форума
разве не для этогоэтот форум, чтоб понять, помочь, указать на недостатки и исправить всем миром а? Ну или хотя бы объясните в чем я заблуждаюсь.
Мальчик.
Прежде, чем пенять тем, кто тебе "не объясняет", сначала возьми зеркало, и хорошенько в него посмотрись.
И ответь себе на вопрос - а понимаешь ли ты хотя бы половину умных слов, которые употребил в своём вопросе?
И может ли кто-то вообще понять, что ты имеешь в виду?

И впредь, если кто-то тебе что-то не объясняет - всегда обижайся только на себя. всё ясно?

теперь по поводу твоих заблуждений.
2 вопроса
1.
авторизирующий скрипт находиться на хосте vasya.bip.ru сессия пишется в /tmp
опиши подробнее - как ты себе этот процесс представляешь.

2.
Я правильно понимаю, что описанные тобой проблемы не возникают, если сессию создаёт один и тот же хост?
если, напирмер, тот же самый vasya.bip.ru запишет в сессию logged=0 то всё будет нормально?
 

maxru

МИФИст
Никак он не определяет. Если чел вошёл в админку и создался SESSID=3984yr89h3r9tu4t489ut4
то, если ты магическим образом узнаешь значение SESSID, во временном файле которого хранятся админские права доступа (интересно, КАК???), то введя blablabla.com/?PHPSESSID=3984yr89h3r9tu4t489ut4 ты станешь админом пока сервак не почистит временные файлы сессии. 8)
 

fixxxer

К.О.
Партнер клуба
а, до меня дошло, о чем он говорит.
1) mod_php, все работает от одного юзера, все сессионные файлы от всех вхостов валятся в одну кучу в /tmp
2) сосед по хостингу смотрит в /tmp и выдергивает id сессии

тогда отвечу просто - не надо пользоваться хостингом за два доллара.
 

SiMM

Новичок
> тогда отвечу просто - не надо пользоваться хостингом за два доллара.
Или хотя бы настраивать session.save_path самому.
 

maxru

МИФИст
Автор оригинала: fixxxer
а, до меня дошло, о чем он говорит.
1) mod_php, все работает от одного юзера, все сессионные файлы от всех вхостов валятся в одну кучу в /tmp
2) сосед по хостингу смотрит в /tmp и выдергивает id сессии

тогда отвечу просто - не надо пользоваться хостингом за два доллара.
В ТОЧКУ!
 

Stierus

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

<?php
session_start();
echo ("<br>session path : ".session_save_path() ."/sess_".session_id()."<br>");
echo ("session id : ".session_id());
$_SESSION['one'] = '1';
$_SESSION['two'] = '2';
$_SESSION['five'] = "5";

if (!isset($x)){
$x= session_save_path() ."/sess_".session_id();
}
$handle = fopen("$x", "a") or die ("cant open file");

$somecontent = "puts into the file \n";

if (is_writable($x)) {
if (fwrite($handle, $somecontent) === FALSE) {
echo "<br>can't write into the file ($filename)";
exit;
}

echo "<br>yup, was writen ($somecontent) into the file ($x)";
} else {
echo "<br>file $x not accesible";
}
echo ("<br>fle intoduction : <br>");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer."<br>";
}
fclose($handle);
echo"<br><br><br>***************************************<br><br>";
$dir = session_save_path() ;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
print "file: <font color=red>$file</font> type: <font color=red>" . filetype($dir."/".$file) . "</font><br>";
}
closedir($dh);
}
}
// специально пропущено session_destroy();
?>

Что бы голову не морочить этим вопросом - пиши сессии в базу данных
 

Gorynych

Посетитель PHP-Клуба
Автор оригинала: fixxxer
а, до меня дошло, о чем он говорит.
1) mod_php, все работает от одного юзера, все сессионные файлы от всех вхостов валятся в одну кучу в /tmp
2) сосед по хостингу смотрит в /tmp и выдергивает id сессии

тогда отвечу просто - не надо пользоваться хостингом за два доллара.
заинтересовался. Особенно в части "не надо пользоваться хостингом за два доллара"

Константин, а скажите пожалуйста, какие еще варианты настройки и конфигурирования Вы можете предложить в случае установки PHP как модуля Apache? Понятно, что если мы раздадим каждому по персональному Apache или используем suEXEC + PHP как cgi(fastcgi), то все у нас будет хорошо.

а что Вы можете порекомендовать при конфигурации Apache + PHP как модуль? Это довольно распространенная конфигурация, и не только на хостинге "за два доллара".

видел тут забавное утверждение
Или хотя бы настраивать session.save_path самому
мысль почти хорошая, за одним большим "НО" - это сработает при указании каталога, в который (опять же) имеет доступ и права записи пользователь, от имени которого исполняется веб-сервер. Так что этот вариант хоть и усложняет доступ к просмотру сессионных файлов (можно поиграться с размещением этого каталога внутри пользовательских папок), но не защищает от рекурсивного сканирования.
 
Сверху