¿Cómo decirle a PHP que use SameSite = None para las cookies entre sitios?

8

De acuerdo con el artículo aquí https://php.watch/articles/PHP-Samesite-cookies y documentación de PHP en https://www.php.net/manual/en/session.security.ini.php , solo hay 2 posibles opciones de configuración para esta nueva característica, agregada en PHP 7.3:

  1. session.cookie_samesite = Lax
  2. session.cookie_samesite = Estricto

Sin embargo, según la consola de Chrome, esto debe establecerse en "Ninguno":

Se estableció una cookie asociada con un recurso entre sitios en la URL sin el SameSiteatributo. Se ha bloqueado, ya que Chrome ahora solo entrega cookies con solicitudes entre sitios si están configuradas con SameSite=Noney Secure. Puede revisar las cookies en las herramientas de desarrollador en Aplicación> Almacenamiento> Cookies y ver más detalles en URL y URL.

Debido a esto, ya no puedo configurar cookies entre sitios. ¿Cuál es la solución?

Dane Iracleous
fuente

Respuestas:

10

Puede establecer el valor en "Ninguno" usando ini_set. No hay verificación de que el valor sea compatible cuando se usa esa función:

ini_set('session.cookie_samesite', 'None');
session_start();

session_set_cookie_params también puede configurarlo:

session_set_cookie_params(['samesite' => 'None']);
session_start();

El informe de error para que esto sea compatible con php.ini está aquí .

Anónimo
fuente
3
Gracias: pude usar el siguiente código para deshacerme del mensaje de Chrome y permitir que las cookies entre sitios sigan funcionando: session_set_cookie_params (['samesite' => 'None', 'secure' => true]);
Dane Iracleous
1
cuidado, samesite = none no es compatible con los navegadores antiguos y rechazará la cookie por completo. comprobar esto y asegurarse de excluir a los navegadores antiguos cuando se establece un atributo samesite a su cookie de sesión: chromium.org/updates/same-site/incompatible-clients
Volkan Ulukut
Establecer session.cookie_samesite = Ninguno en php.ini NO funcionó en PHP 7.3.15. El uso de session_set_cookie_params como se describió anteriormente funcionó.
humbads
1

Malo:

session.cookie_samesite=None

Correcto:

session.cookie_samesite="None"

Explicacion aqui

vitaliytv
fuente
No hagas esto. Algunos navegadores tienen errores y rechazarán las cookies por completo con SameSite = None. Primero debe oler el UserAgent. Aquí hay una explicación de Google .
Dile el
0

Este método puede ser útil para usted

Agregue los atributos del encabezado a nginxcontinuación Secure+SameSite=None

ubicación / {

proxy_cookie_path / "/; secure; SameSite = none";

}

¡Me está funcionando!

Thanh Phong Đỗ
fuente