Maison > Article > développement back-end > Comment puis-je définir l'attribut \'SameSite\' pour les cookies dans les versions PHP antérieures à 7.3 ?
Comment utiliser PHP "SameSite=Strict"
En réponse aux modifications récentes décrites dans la "RFC 6265", qui a introduit le "Same Site" pour contrôler l'accès aux cookies, la prise en charge de cet attribut suscite un intérêt croissant dans PHP.
PHP >= v7.3
Pour les versions PHP 7.3 et ci-dessus, la possibilité de définir l'attribut "Same Site" a été incorporée via le tableau $options dans la fonction setcookie(). L'exemple suivant montre comment définir la valeur « Même site » sur « Aucun » :
<code class="php">setcookie($name, $value, [ 'expires' => time() + 86400, 'path' => '/', 'domain' => 'domain.example', 'secure' => true, 'httponly' => true, 'samesite' => 'None', ]);</code>
PHP < v7.3
Pour les versions de PHP antérieures à 7.3, des solutions alternatives peuvent être employées :
1. Configuration Apache :
En ajoutant la ligne suivante à votre configuration Apache, vous pouvez définir la valeur "Même site" sur "Lax" pour tous les cookies :
Header always edit Set-Cookie (.*) "; SameSite=Lax"
2. Configuration Nginx :
Une approche similaire est disponible pour Nginx, où vous pouvez utiliser la configuration suivante pour définir "Même site" sur "Strict" pour tous les cookies :
location / { # your usual config ... # hack, set all cookies to secure, httponly and samesite (strict or lax) proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; }
3. Méthode d'en-tête :
Comme les cookies sont essentiellement des en-têtes dans les requêtes HTTP, vous pouvez les définir à l'aide de la méthode header() :
<code class="php">header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");</code>
4. Setcookie() Bug Exploit :
Il existe un bug connu dans la méthode setcookie() qui permet de définir la valeur "Same Site" sur "Strict" dans les versions PHP antérieures à 7.3 :
<code class="php">setcookie('cookie-name', '1', 0, '/; samesite=strict');</code>
Remarque : Ce bug a été corrigé dans PHP 7.3.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!