2015-09-06 3 views
1

Недавно я начал очень внимательно смотреть на сеансы PHP с целью укрепления безопасности моих сайтов. Я наткнулся на session_set_cookie_params(). Меня особенно интересовал 4-й параметр (boolean secure). Означает ли это, что сайт должен работать с защищенным протоколом http (https), чтобы установить этот параметр в true? Если нет, то как PHP затем отправляет файлы cookie через безопасное соединение для сайта, который использует только протокол HTTP?Каковы последствия отправки файлов cookie через безопасные соединения в PHP

+1

PHP не очень заботится об этом параметре. Он просто отправляет соответствующий флаг вместе с заголовком «Set-Cookie:». Только браузеры распознают и действуют на него. – mario

+0

@mario, если я понял, вы говорите, что даже сайты, которые не работают, https может установить «безопасный» параметр в true, правильно? –

+1

Да, они могут. Они просто не получат сохраненный файл cookie через HTTP позже. – mario

ответ

1

Флаг secure является частью спецификации для печенья. Если браузер получает файл cookie с установленным флагом secure, он не отправит этот файл cookie на сервер, если только соединение не зашифровано в HTTPS. PHP будет установить cookie независимо от текущего состояния соединения, он не знает и не знает о присутствии HTTPS; вам нужно убедиться, что вы также устанавливаете файл cookie поверх HTTPS.

Вы должны отправить кук аутентификации исключительно через HTTPS, чтобы избежать прямого угона сессий мужчин-в-средних или другие незащищенные сетей (например, совместно незашифрованный Старбакс Wi-Fi). Иначе вытащить секретный идентификатор сеанса из эфира - это реальная возможность, и поэтому любой может выдать себя за другого. И это означает, что все время, когда пользователь входит в систему, он должен взаимодействовать с вашим сервером через HTTPS, поскольку cookie все время идет вперед и назад; использование HTTPS только для начальной страницы входа недостаточно.

0

По умолчанию файлы cookie отправляются для всех запросов (http и https).

Если вы установили безопасный флаг в true, браузер отправит их только для запросов https.

Важно всегда устанавливать безопасный флажок для файлов cookie для проверки подлинности: даже если вы не не используете http-запросы, кто-то другой может заставить браузер сделать это, и даже если вы ответите 301, уже слишком поздно, они уже отправлены в ясном тексте.

Для полного https-сайта вы можете систематически установить безопасный флаг в значение true.

Смежные вопросы