J'ai récemment lu "RFC 6265" sur l'attribut "Même site", j'ai regardé certains articles qui en parlaient en avril 2016, l'attribut "même site" a été implémenté pour Chrome 51 et Opera 39 ...
Je me demande si le courant PHP supporte la création de cookies avec cet attribut?
Référence:
[ Mise à jour importante: Comme @caw l'a souligné ci-dessous, ce piratage S'INTERROMPURA PHP 7. . Arrêtez de l'utiliser maintenant pour vous éviter des surprises désagréables! Ou au moins envelopper dans un PHP contrôle de version comme if (PHP_VERSION_ID < 70300) { ... } else { ... }
.]
Il semble que vous puissiez abuser du paramètre "path" ou "domain" de la fonction "setcookie" de PHP pour se faufiler dans l'attribut SameSite car PHP n'échappe pas aux points-virgules:
setcookie('samesite-test', '1', 0, '/; samesite=strict');
Ensuite PHP envoie l'en-tête HTTP suivant:
Set-Cookie: samesite-test = 1; chemin = /; samesite = strict
Je viens de le découvrir il y a quelques minutes, alors faites vos propres tests! J'utilise PHP 7.1.11.
Vous aurez le paramètre $samesite
Dans la fonction setcookie
bool setcookie (
string $name
string $value = ""
int $expire = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false,
string $samesite = "" // Lax or Strict
)
Voir plus ici - PHP RFC: même cookie de site
Vous pouvez utiliser l'une des solutions/solutions suivantes en fonction de votre base de code/besoins
Vous pouvez ajouter la ligne suivante à votre configuration Apache
Header always edit Set-Cookie (.*) "$1; SameSite=Lax"
et cela mettra à jour tous vos cookies avec le drapeau SameSite=Lax
Voir plus ici: https://blog.giantgeek.com/?p=1872
location / {
# your usual config ...
# hack, set all cookies to secure, httponly and samesite (strict or lax)
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
}
De même ici, cela mettra également à jour tous vos cookies avec le drapeau SameSite=Lax
Voir plus ici: https://serverfault.com/questions/849888/add-samesite-to-cookies-using-nginx-as-reverse-proxy
header
Comme nous le savons, les cookies ne sont qu'un en-tête dans une requête HTTP avec la structure suivante
Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax
afin que nous puissions simplement définir les cookies avec la méthode header
header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");
En fait, Symphony n'attend pas PHP 7.3 et le fait déjà sous le capot, voir ici
???? Vous pouvez utiliser la même chose dans Laravel aussi parce que Laravel sous le capot en utilisant la classe Symfony\Component\HttpFoundation\Cookie
De Symphony)
setcookie
setcookie('cookie-name', '1', 0, '/; samesite=strict');
Attention à celui-ci, c'est un bug connu dans la méthode PHP setcookie
et déjà résolu dans la version PHP7.3, voir ici - https: // github. com/php/php-src/commit/5cb825df7251aeb28b297f071c35b227a3949f01
Selon ce site , il semble qu'il s'agisse de PHP 7.3. En ce qui concerne les résultats du vote, une extension plus générale des fonctions liées aux cookies est en cours d'implémentation + il pourrait également y avoir une nouvelle clé dans le fichier php.ini.
Mais comme Marc B l'a déjà écrit, vous pouvez utiliser l'appel de fonction header () à la place, je le ferais dans un fichier avec utilisé pour l'inclusion d'autres choses initiales.