【问题标题】:Symfony 3.2, authentification and cross-site cookiesSymfony 3.2、身份验证和跨站点 cookie
【发布时间】:2020-09-02 11:04:50
【问题描述】:

我知道 Symfony 3.2 维护的时间不长,但碰巧我的公司正在使用它。 现在我们遇到了身份验证问题。我们有可以(并且已经)安装在多个站点上的小部件,因此用户可以在那里登录。但是 Symfony 3.2 中的数据库和后端代码存储在我们的站点中。对于身份验证,我们使用标准的 Symfony cookie,在我们的例子中是跨站点的。 但是现在谷歌浏览器被限制访问没有标记为 SameSite=None 的跨域 cookie。因此 Chrome 中的身份验证不再起作用。 我知道在 Symfony 4.2 中我可以通过在 security.yaml 中设置安全参数来解决这个问题。但在 Symfony 3.2 中它不起作用。 除了升级到 Symfony 4 有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: symfony cookies symfony-3.2


    【解决方案1】:

    来自https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md

    从 PHP 7.3.0 开始, setcookie()方法 在其选项中支持 SameSite 属性,并将接受 None 作为 有效值。

    // Set a same-site cookie for first-party contexts
    setcookie('cookie1', 'value1', ['samesite' => 'Lax']);
    // Set a cross-site cookie for third-party contexts
    setcookie('cookie2', 'value2', ['samesite' => 'None', 'secure' => true]);
    

    对于早期版本的 PHP,您还可以设置 直接header()

    // Set a same-site cookie for first-party contexts
    header('Set-Cookie: cookie1=value1; SameSite=Lax', false);
    // Set a cross-site cookie for third-party contexts
    header('Set-Cookie: cookie2=value2; SameSite=None; Secure', false);
    

    对于 Session Cookie ,你可以设置成session_set_cookie_params 方法。 PHP 7.3.0 为相同站点引入了新属性。

    if (PHP_VERSION_ID >= 70300) { 
    session_set_cookie_params([
        'lifetime' => $cookie_timeout,
        'path' => '/',
        'domain' => $cookie_domain,
        'secure' => $session_secure,
        'httponly' => $cookie_httponly,
        'samesite' => 'Lax'
    ]);
    } else { 
    session_set_cookie_params(
        $cookie_timeout,
        '/; samesite=Lax',
        $cookie_domain,
        $session_secure,
        $cookie_httponly
    );
    }
    

    有第三方包,例如delight-im/PHP-Cookie,在PHP 5.4.0+ 上支持SameSite 属性和None 值(自v3.2 起)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2016-12-24
      • 2023-04-01
      • 2012-06-02
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多