создание безопасных файлов cookie сеанса php - PullRequest
3 голосов
/ 08 октября 2011

Я пытаюсь получить cookie сеанса php, в котором хранится идентификатор сеанса php, для обеспечения безопасности (https) и только http.

$name = session_name();
setcookie($name, $_COOKIE[$name], 0, '/', 'domain.com, 1, 1);

Я вызываю вышеуказанный код перед началом сеанса. Проблема в том, что он создает два куки. Безопасный, как я хочу, и затем он создает обычный cookie без ssl или http-only. Оба куки имеют одинаковое значение.

Есть ли способ сообщить php о создании безопасных (ssl) и http-файлов сеансовых файлов cookie?

Кроме того, вместо того, чтобы задавать другой вопрос. Поскольку мы на одну тему ... Может ли пользователь изменять переменные $_SESSION на их конце? Я знаю, что они могут манипулировать идентификатором сеанса на своем конце, но мне было интересно, безопасен ли $_SESSION для хранения идентификатора пользователя, который конечный пользователь не может изменить по своей воле.

1 Ответ

8 голосов
/ 08 октября 2011

PHP создает cookie для вас в тот момент, когда вы звоните session_start(), поэтому.

Вы можете настроить этот файл cookie с помощью функции session_set_cookie_params или внутри php.ini.

session_set_cookie_params($lifetime = 0, $path = '/', $domain, $secure = true, $httponly = true);

Просто настройте и удалите свой собственный setcookie вызов, он избыточен.

Может ли пользователь изменять $_SESSION переменные на их конце?

Нет, они могут редактировать только данные в куки. Обычно это приводит к потере сеанса (или получению сеанса кого-то другого, если им повезет).

Вот почему вам нужно снова запросить текущий пароль, если пользователь хочет изменить свой пароль. То же самое для всего, что важно.

Также после успешного входа или выхода из системы изменить идентификатор сеанса :

session_regenerate_id();

для выхода из системы:

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