michelle
Новичок
Переменные внутри сессии
Доброго всем времени суток!
Кто подскажет, почему так!
1. В файле redirect.php после проверки пользователя в базе данных открываю ему сессию:
session_start();
session_register('user','passwd','hostname','referer','user_agent','remote_addr');
$user_s = $HTTP_POST_VARS['login_username'];
$passwd_s = $HTTP_POST_VARS['secretkey'];
$hostname_s = $HTTP_SERVER_VARS['HTTP_HOST'];
$referer_s = $HTTP_SERVER_VARS['HTTP_REFERER'];
$user_agent_s = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$remote_addr_s = $HTTP_SERVER_VARS['REMOTE_ADDR'];
и преренаправляю на страницу menu.php?PHPSESSID=123fr5......
2. В файле menu.php делаю проверку:
session_id($SESSID);
session_start();
$user_n = $HTTP_SESSION_VARS['user'];
$passwd_n = $HTTP_SESSION_VARS['passwd'];
$hostname_n = $HTTP_SESSION_VARS['hostname'];
$referer_n = $HTTP_SESSION_VARS['referer'];
$user_agent_n = $HTTP_SESSION_VARS['user_agent'];
$remote_addr_n = $HTTP_SESSION_VARS['remote_addr'];
$hostname_r = $HTTP_SERVER_VARS['HTTP_HOST'];
$user_agent_r = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$remote_addr_r = $HTTP_SERVER_VARS['REMOTE_ADDR'];
if (($hostname_n != $hostname_r) || ($user_agent_n != $user_agent_r) && ($remote_addr_n != $remote_addr_r)){
header("Location: index.php\n\n");
}
3. Открываю другой браузер (например, вначале зашли с Internet Explore'a, а затем скопировали ссылку в Netscape Navigator) и в адресной строке прописываю: menu.php?PHPSESSID=123fr5......, при этом, сессионные переменная $user_agent меняет свое значение на имя текущего браузера
Ворос:
1. ПОЧЕМУ ЭТО ТАК происходит?
2. Можно-ли ТАКИМ образом закрыть доступ к скрипту menu.php. А если нельзя, то какими способами можно обезопасить работу со скриптами?
Доброго всем времени суток!
Кто подскажет, почему так!
1. В файле redirect.php после проверки пользователя в базе данных открываю ему сессию:
session_start();
session_register('user','passwd','hostname','referer','user_agent','remote_addr');
$user_s = $HTTP_POST_VARS['login_username'];
$passwd_s = $HTTP_POST_VARS['secretkey'];
$hostname_s = $HTTP_SERVER_VARS['HTTP_HOST'];
$referer_s = $HTTP_SERVER_VARS['HTTP_REFERER'];
$user_agent_s = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$remote_addr_s = $HTTP_SERVER_VARS['REMOTE_ADDR'];
и преренаправляю на страницу menu.php?PHPSESSID=123fr5......
2. В файле menu.php делаю проверку:
session_id($SESSID);
session_start();
$user_n = $HTTP_SESSION_VARS['user'];
$passwd_n = $HTTP_SESSION_VARS['passwd'];
$hostname_n = $HTTP_SESSION_VARS['hostname'];
$referer_n = $HTTP_SESSION_VARS['referer'];
$user_agent_n = $HTTP_SESSION_VARS['user_agent'];
$remote_addr_n = $HTTP_SESSION_VARS['remote_addr'];
$hostname_r = $HTTP_SERVER_VARS['HTTP_HOST'];
$user_agent_r = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$remote_addr_r = $HTTP_SERVER_VARS['REMOTE_ADDR'];
if (($hostname_n != $hostname_r) || ($user_agent_n != $user_agent_r) && ($remote_addr_n != $remote_addr_r)){
header("Location: index.php\n\n");
}
3. Открываю другой браузер (например, вначале зашли с Internet Explore'a, а затем скопировали ссылку в Netscape Navigator) и в адресной строке прописываю: menu.php?PHPSESSID=123fr5......, при этом, сессионные переменная $user_agent меняет свое значение на имя текущего браузера
Ворос:
1. ПОЧЕМУ ЭТО ТАК происходит?
2. Можно-ли ТАКИМ образом закрыть доступ к скрипту menu.php. А если нельзя, то какими способами можно обезопасить работу со скриптами?