Защищены ли файлы cookie для сеансов PHP?

Я пытаюсь защитить свои сеансы. При проведении некоторых исследований я пришел к выводу, что случайный хеш PHP PHPSESSID + на основе агента и IP-адреса достаточно хорош для защиты от взлома. Что еще поделаешь, правда?

Я использую HTTPS для входа в систему. Насколько я понял, данные сеанса из PHP никогда не отправляются пользователю, а хранятся на стороне сервера. Клиент получает только идентификатор сеанса. Данные сеанса содержат фактический сеанс пользователя веб-приложения, который, в свою очередь, используется для проверки действительности логина. Все в порядке.

Однако есть деталь, которую я нигде не могу найти. Я хотел бы знать, помечается ли файл cookie, содержащий идентификатор сеанса PHP, автоматически безопасным, если я использую HTTPS. Я сделал несколько поисков в Google, но мне так и не удалось найти нужную строку поиска, потому что я нахожу только способы отправки файлов cookie вручную. Я хотел бы знать, потому что, если этот файл cookie будет отправлен в виде открытого текста, он может поставить под угрозу безопасность через посредника.

РЕДАКТИРОВАТЬ 1

Это дополнение для @ircmaxell

I попробовал ваш метод, но почему-то я все еще получаю cookie, когда переключаюсь с HTTPS обратно на HTTP. Это должно работать следующим образом. Когда сервер знает, что сеанс пользователя доступен, он устанавливает безопасный флаг. Это означает, что весь сайт работает на SSL, как только вы вошли в систему, и отказывается отдавать / использовать cookie всякий раз, когда вы не используете SSL. По крайней мере, такова идея.

if ($SysKey['user']['session_id'] != '') {
   session_set_cookie_params(60*60*24*7, '/', $SysKey['server']['site'], true, true);
}

Я предполагаю, что мне нужно регенерировать идентификатор, так как в браузере уже был файл cookie до входа в систему, но поскольку я могу попробовать его только через несколько часов, я спрошу здесь, прежде чем пытаться

ПРИМЕЧАНИЯ К РЕШЕНИЮ

Я только что узнал, что вы должны установить эти параметры перед началом сеанса. Это была моя проблема. Сейчас я использую 2 разных файла cookie. Один для обычного гостя, который отправляется через http, а второй для авторизованных пользователей, который отправляется только через ssl.

7
задан Mike 20 January 2011 в 12:51
поделиться