Проверьте наличие сеанса (Nginx) - PullRequest
2 голосов
/ 22 августа 2010

У меня есть две сессии в PHP:

$_SESSION["session"]["key"] = md5 ($token . $userAgent . $ip);
$_SESSION["session"]["timeout"] = time ();

Просто хочу проверить, что сеансы с nginx, пробовали этот код безуспешно:

location / {
    if ($request_filename ~* "index.php") {
        break;
    }

    if ($http_cookie ~* "session") {
        break;
    }

    rewrite ^.+$ https://localhost/index.php last;
}

Есть какие-нибудь подсказки?

Спасибо.

1 Ответ

6 голосов
/ 22 августа 2010

cookie просто содержит идентификатор сеанса, идентификатор всегда создается на session_start();, поэтому, если вы звоните, что в вашем скрипте у пользователя всегда будет идентификатор сеанса.

ваша лучшая ставка - это тоже добавитьвторой файл cookie:

setcookie('session_key',md5 ($token . $userAgent . $ip));

, затем в nginx:

if ($http_cookie ~* "session_key")
{
    break;
}

, чтобы проверить, установлен ли этот файл cookie.

Если хэш чувствителен, сделайте следующее:

setcookie('session_key_active','1');

Тогда в Nginx:

if ($http_cookie ~* "session_key_active")
{
    break;
}

Но это все еще уязвимо, всегда проверяйте совпадения значений на стороне сервера!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...