PHP setcookie функция не поддерживает httponly или безопасные аргументы - PullRequest
0 голосов
/ 20 февраля 2019

Понятия не имею, почему это происходит или как это исправить.

Я могу запустить это:

setcookie('cookie_name', 1, time()+86400*365*2, "/", ".domain.com", false, false);

И я получаю это в заголовках ответов, когда загружаю скрипт

1007 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *] [10]это?

Это PHP 7.1

Доступ к сайту осуществляется через https, если это имеет значение.

РЕДАКТИРОВАТЬ: Мы используем заголовки Strict-Transport-Security на .htaccessфайл.Я пытался закомментировать это, но, похоже, это не имело никакого эффекта.

EDIT2: я смог обойти это, просто установив cookie в javascript.Это препятствовало тому, чтобы я прочитал javascript cookie, где я нуждался в этом.Этот домен находится в списке предварительной загрузки HSTS, поэтому у меня возникает ощущение, что chrome добавляет эти флаги, потому что знает, что этот домен безопасен.Я не уверен, почему он позволяет javascript устанавливать их неизмененными.

Есть ли у кого-нибудь какая-либо информация о предзагрузке HSTS и ее влиянии, если таковое имеется, на заголовок set-cookie?

1 Ответ

0 голосов
/ 21 февраля 2019

Я думаю, что интересно то, что вокруг двоеточий нет места для последних двух флагов.Это предполагает одну из трех причин:

  1. Это неважная опечатка, которую вы сделали при создании вопросов.
  2. PHP просто странный.Я не использую его, поэтому не исключаю возможности.
  3. Эти атрибуты задает нечто иное, кроме PHP.

Я создал способ применения этих флаговв Apache, даже если бэкэнд-процесс создания файлов cookie не установил их с этой конфигурацией Apache:

# Rewrite any session cookies to make them more secure
# Make ALL cookies created by this server are HttpOnly and Secure
# (except the SPECIAL-CLIENT cookie and OTHER-COOKIE which can't be HttpOnly and is already set to Secure)  
Header edit Set-Cookie ^((?!(SPECIAL-CLIENT|OTHER-COOKIE).*)$ $1;HttpOnly;Secure
#Strip off double Secure or HttpOnly settings as if App and Apache sets above you can sometimes get both
Header edit Set-Cookie ^(.*);\s?Secure;?\s?(.*);\s?Secure;?\s?(.*)$ "$1; $2; $3; Secure"
Header edit Set-Cookie ^(.*);\s?HttpOnly;?\s?(.*);\s?HttpOnly;?\s?(.*)$ "$1; $2; $3; HttpOnly"
#Strip off double ;; settings
Header edit Set-Cookie ^(.*);\s?;\s?(.*)$ "$1; $2"

Возможно, вы используете что-то подобное или подобное для установки этих атрибутов вне PHP

...