PHP создает файл sess_null с данными сеанса - PullRequest
0 голосов
/ 04 октября 2011

Я запускаю веб-сервер Apache / 2.2.17 с PHP 5.3.5-1ubuntu7.2 и заметил, что PHP создает файлы sess_null в каталоге / tmp.Это приводит к угону сессии.

Здесь; секция сеанса из php.ini:

session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1860    1860
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /tmp    /tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   0   0

В основном это значения по умолчанию.

У кого-нибудь были такие проблемы, и они могут мне помочь?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Если имя файла sess_null, похоже, что session_id было установлено на null. По умолчанию PHP создает имя файла с префиксом id с sess_.

Я бы предположил (я могу предположить только потому, что вы не опубликовали свой код), что вы установили идентификатор сеанса на "null" где-то в вашем коде. Функция для установки идентификатора сеанса: session_id Документы .

0 голосов
/ 04 октября 2011

Как я справляюсь с этим на сервере, работающем с несколькими сайтами.

Сохраняйте сеансы из / tmp, устанавливая новый путь на один каталог BACK от веб-корня.Держит его вне / tmp.Так что, если ваш веб-корень - / home / username / web_root, ваши сеансы заканчиваются в / home / username / session, вне пути, доступного через Интернет, а не в / tmp.Следующее предполагает, что все ваши пользовательские исполняемые файлы находятся на одном уровне!Когда я каждый раз вызываю один скрипт с помощью mod_rewrite, это работает для меня.

ini_set('session.save_path', realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/../sessions') );

Другие простые вещи, которые я делаю: начинайте сессию и дайте мне более приятную ручку.

session_start();
$s =  &$_SESSION;

АутентификацияКод просто устанавливает флаг, который я проверяю перед каждой операцией, требующей авторизации.

$s['user']['authenticated'] = true;

Код выхода из системы разрушает сеанс:

session_destroy();

Выйти из системы ВСЕХ пользователей этого сайта:

rm -f /home/username/sessions/*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...