【问题标题】:Google chrome Version 84.0.4147.125 (Official Build) (64-bit) destroying application session when redirecting on callback function from third partyGoogle chrome 版本 84.0.4147.125(官方构建)(64 位)在重定向来自第三方的回调函数时破坏应用程序会话
【发布时间】:2020-12-01 05:19:50
【问题描述】:

// 在进入第三方网关托管表单之前创建会话

public function ezi_test() {

        if (isset($_SESSION['form_data'])) {
            unset($_SESSION['form_data']);
        }

        $this->common->maintain_log(array('collection_type'=>3,'org_id'=>'','log_path'=>'gateway_log/ezidebit/hosted_payment_formdata_creation_bef','log_data'=>json_encode($_REQUEST)));
        parse_str($_REQUEST['data1'], $_REQUEST);
        $_SESSION['paynow']['tnc']['email_id'] = isset($_REQUEST['email_id']) ? $_REQUEST['email_id'] : '';
        $this->common->maintain_log(array('collection_type'=>3,'org_id'=>'','log_path'=>'gateway_log/ezidebit/hosted_payment_formdata_creation','log_data'=>json_encode($_REQUEST)));

        $_SESSION['form_data'] = $_REQUEST
}

// 在第三方回调中检索会话 公共函数 ezi_hosted_pa​​yment() {

    if (isset($_SESSION['ezi_hosted'])) {
        unset($_SESSION['ezi_hosted']);
    }

    if (isset($_SESSION['form_data'])) {
        $form_data = $_SESSION['form_data'];
        unset($_SESSION['form_data']);
    }

    $this->common->maintain_log(array('collection_type'=>3,'org_id'=>'','log_path'=>'gateway_log/ezidebit/hosted_payment_log','log_data'=>json_encode($_REQUEST)));

    $this->common->maintain_log(array('collection_type'=>3,'org_id'=>'','log_path'=>'gateway_log/ezidebit/hosted_payment_formdata','log_data'=>json_encode($form_data)));

    $final = array_merge($_REQUEST, $form_data);
    $_SESSION['pg_response'] = $_REQUEST;
    $this->ezi_gateway_paynow_sub($final);
}

【问题讨论】:

标签: php function google-chrome redirect callback


【解决方案1】:

我为 .net core 3.2 找到了一些解决方案: 设置

services.AddAuthentication

 .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
                {
                    options.Cookie.SameSite = SameSiteMode.None;
                    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
                })

设置 idp

options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always;
            options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always;

【讨论】:

    【解决方案2】:

    在 ASP.NET Core 3.1 和 HTTP(不是 HTTPS)中的开放 id 身份验证存在同样的问题。

    可以重现:使用更新版本 84.0.4147.125(Offizieller 构建)(64 位),始终重定向到登录页面。在其他浏览器上(例如 edge chromium 版本 84.0.522.58 (Offizielles Build) (64-Bit))工作正常。

    我读过一些关于它的文章(德语) https://www.heise.de/news/Chrome-84-Google-verlangt-SameSite-Attribut-und-HTTPS-4844124.html

    [更新] 找到了一个临时解决方案:chrome://flags/ 设置:默认为 SameSite cookie 将未指定 SameSite 属性的 cookie 视为 SameSite=Lax。站点必须指定 SameSite=None 才能启用第三方使用。 – Mac、Windows、Linux、Chrome 操作系统、Android

    设置为禁用。

    更好的解决方案是在cookie中设置samesite属性并启用https...

    猜猜是这个原因。

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 2020-01-12
      • 2021-03-07
      • 1970-01-01
      • 2020-12-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多