Maison  >  Article  >  développement back-end  >  Comment définir les cookies « SameSite=Strict » en PHP : un guide pour différentes versions ?

Comment définir les cookies « SameSite=Strict » en PHP : un guide pour différentes versions ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 05:53:02195parcourir

How to Set “SameSite=Strict” Cookies in PHP: A Guide for Different Versions?

Utilisation de PHP pour définir les cookies "SameSite=Strict"

L'attribut "SameSite" améliore la sécurité des cookies en limitant leur accessibilité aux tiers -contextes de fête. En avril 2016, cette fonctionnalité a été introduite dans Chrome 51 et Opera 39.

PHP 7.3 et supérieur

Pour les versions PHP 7.3 et ultérieures, vous pouvez directement définir le " SameSite" utilisant le tableau $options dans la fonction setcookie() :

<code class="php">setcookie($name, $value, [
    'expires' => time() + 86400,
    'path' => '/',
    'domain' => 'domain.example',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'None',
]);</code>

L'élément "samesite" doit avoir la valeur "Aucun", "Lax" ou "Strict".

Versions PHP inférieures à 7.3

Si vous utilisez des versions PHP inférieures à 7.3, vous pouvez utiliser les solutions de contournement suivantes :

1. Modification de la configuration Apache

Ajoutez ceci à votre configuration Apache :

Header always edit Set-Cookie (.*) "; SameSite=Lax"

2. Modification de la configuration Nginx

Incluez ceci dans votre configuration Nginx :

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

Définissez les cookies à l'aide de la méthode d'en-tête :

<code class="php">header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");</code>

4. Bug dans la méthode setcookie()

Utilisez cette méthode avec prudence car elle a été résolue dans PHP 7.3 :

<code class="php">setcookie('cookie-name', '1', 0, '/; samesite=strict');</code>

N'oubliez pas d'utiliser la solution de contournement appropriée en fonction de votre base de code et de vos exigences. .

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn