Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: PayPal-Cookie u.a. mit SameSite Attribute korrekt ausweisen?

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo,

    die Tage bin ich beim Arbeiten in meiner Stylesheet in der Firefox-Webkonsole über einige Fehlermeldungen und Warnungen gestolpert und möchte jetzt gerne etwas aufräumen ... . Mit dieser Meldung wollte ich anfangen:

    "Einige Cookies verwenden das empfohlene "SameSite"-Attribut inkorrekt."

    Das scheint aber etwas komplexer zu sein und ich bin mir unsicher ob man die Cookies überhaupt einfach so mit dem SameSite-Attribute ausweisen kann.

    Unter anderem auf dieser Seite habe ich mich ein wenig eingelesen: https://www.e-dialog.at/blog/webanalyse/alles-zur-chrome-samesite-cookie-aenderung/ und mir zuerst mal den PayPal-Cookie "paypalplus_session_v2" vorgenommen um dann mit der MODsid usw. weiterzumachen.

    Angefangen habe ich in meinem verwendeten CookieGuard - bin mir aber nicht recht schlüssig wie das da richtig reingehört. In meinem verwendeten PayPalPlus-Modul muß der paypalplus_session_v2 auch irgendwo stecken - nur wo?

    Diese Möglichkeiten zur Ausweisung gibt es wohl und Lax scheint so ein Mittelding zu sein - aber kann man das so einfach verwenden?

    SameSite=Strict; secure
    SameSite=Lax; secure
    SameSite=None; secure

    Code: PHP  [Auswählen]
     <?php        if (SESSION_FORCE_COOKIE_USE == 'True') {        ?>
            $.cookieguard.cookies.add('PHP Session', 'MODsid,cookie_test', '<?php echo COOKIE_MODSID_TXT; ?>', true); //true if essential cookie, false if not, noRiddle
            <?php
            } else {
            ?>
            $.cookieguard.cookies.add('PHP Session', 'MODsid', '<?php echo COOKIE_MODSID_TXT; ?>', true); //true if essential cookie, false if not, noRiddle
            <?php
            }
            ?>
            <?php
            if (TRACKING_PIWIK_ACTIVE == 'true') {
            ?>
            $.cookieguard.cookies.add('PIWIK', '_pk_id.1.c9a7,_pk_ses.1.c9a7', '<?php echo COOKIE_PIWIK_TXT; ?>', false);
            <?php
            }
            if (TRACKING_GOOGLEANALYTICS_ACTIVE == 'true') {
            ?>
            $.cookieguard.cookies.add('Google Analytics', '__utma,__utmt,__utmb,__utmc,__utmz,__utmv,_ga,_gid,_gat', '<?php echo COOKIE_GOOGLEANALYTICS_TXT; ?>', false);
            <?php
            }
            {
            ?>
            $.cookieguard.cookies.add('PayPalPlus; SameSite=Lax; secure', 'paypalplus_session_v2; SameSite=Lax; secure', '<?php echo COOKIE_PAYPALPLUS_TXT; ?>', true);
            <?php
            }
            ?>
            $.cookieguard.run();
     

    In meiner Webkonsole sieht der obige Code dann jetzt so aus wie im angehangenen Bild undes scheint alles zu funktionieren ... .
    (Mein Shop: v2.0.3.0 rev 10907 dated: 2017-08-16)

    Linkback: https://www.modified-shop.org/forum/index.php?topic=41800.0

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Schau doch mal, wie es in 2.0.6.0 gelöst wurde.

    Gruß Timm

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo Timm,

    habe den Shoproot der aktuellen shopversion mit meinem Agenten Ransack nach paypalplus_session_v2 durchsucht und ich bekomme 0 Ergebnisse. Gibt es den Cookie gar nicht mehr? Bei der Suche nach SameSite wirft er mir acht Dateien aus. Ob ich die Codeschnipsel aus den Dateien einfach so in meine Dateien hineinkopieren kann?  Oh je, das wird wohl für meine Shopversion nix. Aber ich vergleiche die Dateien mal mit meinen.

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Der/Das Cookie paypalplus_session_v2 wird erst erstellt, wenn du auf der checkout_payment.php bist und wird vermutlich extern geladen. Vermutlich findest du ihn deshalb nicht im shopcore.

    Mach doch ein Update auf die neueste Shopversion, als an einer alten Version rumzubasteln. Geht am Ende vielleicht schneller und bringt mehr Vorteile durch Verbesserungen.

    Gruß Timm

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo Tim,

    klar, neue Version wäre toll - aber in meiner aktuellen steckt bereits derart viel Arbeit, dass das für die neue Version nicht so eben alles wiederholbar ist. Meine jetzige Version muß noch ein bisschen weiter arbeiten und mit meiner Bastelei leben.

    Meine Hoffnung war, dass das für meine drei, vier in Frage kommenden Cookies nicht so schwierig wäre das mit dem SameSite zu bewerkstelligen. Ich bin noch am Schauen wie ich da weiterkomme - aber ich fürchte, dass das mal wieder nichts für Verbastler ist ...   :-(

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Ich habe mir das jetzt erst mal gerade im Demoshop angeschaut, da bei mir der paypalplus_session_v2 cookie sich auf jeder Seite aufruft - nicht erst im Checkout ... . Im Demo kann ich es nicht nachstellen, da das PPPlus-Modul nicht funktioniert.

    Über die Webkonsole im Firefox angeschaut mangelt es der Demo allerdings auch nicht an Warnungen! Inbesondere das Thema Modsid-Cookie scheint noch ungelöst - sh. Bild.

    Hmm, das heißt jetzt vermutlich warten, bis das/der Cookie tatsächlich abgelehnt wird und spontan in Aktionismus verfallen - oder es tut sich hinter den Kulissen schon etwas und es gibt vielleicht bald eine Lösung? Vielleicht auch was für ältere Shops. Das wäre natürlich schön.

    Wie akut ist diese Thematik eigentlich??

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.225
    • Geschlecht:
    im Demoshop wird das Cookie korrekt gesetzt.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruss Gerhard

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo Gerhard,

    ja, das sieht soweit gut aus und wenn man sich meinen Bildanhang anschaut, dann gibt das die FF-Webkonsole auch so aus - nur die Meldungen darunter verstehe ich dann nicht. Sagen die nicht Gegenteiliges aus? Aber vielleicht lese ich das auch nur völlig falsch.

    Aber sei es drum - meine ursprüngliche Frage war ja, wie ich das für meine ältere Shopversionen nacharbeiten kann. Das Thema dürfte ja dann auch nicht nur mich betreffen.
    Für die aktuelle Version hat das mit dem Fix#1864 ja geklappt - zumindest für den MODsid. Für die älteren Versionen kann ich keinen Fix finden :-(

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.225
    • Geschlecht:
    schau dir dazu das Cookie Handling aus der 2.0.6.0 an.

    Gruss Gerhard

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Habe versucht mich da reinzulesen - aber ich mache wohl etwas falsch bzw. es fehlt irgend etwas. Die Modsid-Flags sind immer noch so wie zuvor auf true, false, none :-(

    Meine Shopversion mit resp. Fremdtemplate: v2.0.3.0 rev 10907, PHP 7.1.33-nmm1 (Zend: 3.1.0).

    Folgende Dateien habe ich in der aktuellen Shopversion 2.0.6.0-r13500 und bei mir gefunden:

    /inc/set_session_cookie.inc.php (ich habe hier die Datei aus der neuen Shopversion unverändert übernommen)
    /inc/xtc_setcookie.inc.php (auch hier habe ich die Datei aus der neuen Shopversion unverändert übernommen)
    /includes/modules/set_session_and_cookie_parameters.php (hier habe ich zweimal das Codeschnipsel mit dem Lax aus der neuen Datei mit in meine alte unten übernommen).

    Dann spielt sich noch etwas in der oil.min und der cookieconsent.js.php im template der aktuellen Version ab. Das scheint aber eher das Pendant zu meinem Cookieguard zu sein - den ich offenbar, neben der modernizr.js die bei mir läuft und die auch in der aktuellsten Version das cookie cookietest nicht fixed, nochmal gesondert angehen muß.
    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: set_session_and_cookie_parameters.php 10747 2017-05-19 07:50:31Z GTB $

       modified eCommerce Shopsoftware
       http://www.modified-shop.org

       Copyright (c) 2009 - 2013 [www.modified-shop.org]
       -----------------------------------------------------------------------------------------
       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    // include needed function
    require_once(DIR_FS_INC.'xtc_setcookie.inc.php');
    require_once(DIR_FS_INC.'set_session_cookie.inc.php');
    require_once(DIR_FS_INC.'redirect_invalid_session.inc.php');

    @ini_set('session.use_only_cookies', (SESSION_FORCE_COOKIE_USE == 'True') ? 1 : 0);

    // set the session name and save path
    xtc_session_name('MODsid');
    if (STORE_SESSIONS != 'mysql') {
      xtc_session_save_path(SESSION_WRITE_DIRECTORY);
    }

    if (STORE_SESSIONS == 'mysql') {
      // check valid session_id
      if (isset($_GET[xtc_session_name()]) && $_GET[xtc_session_name()] != '') {
        $check_query = xtc_db_query("SELECT sesskey
                                       FROM "
    .TABLE_SESSIONS."
                                      WHERE sesskey = '"
    .xtc_db_input(preg_replace('/[^0-9a-zA-Z]/', '', $_GET[xtc_session_name()]))."'");
        if (xtc_db_num_rows($check_query) < 1) {
          redirect_invalid_session();
        }
      }
      // delete old cookies
      if (isset($_COOKIE[xtc_session_name()])) {
        $check_query = xtc_db_query("SELECT expiry
                                       FROM "
    .TABLE_SESSIONS."
                                      WHERE sesskey = '"
    .xtc_db_input(preg_replace('/[^0-9a-zA-Z]/', '', $_COOKIE[xtc_session_name()]))."'");
        $check = xtc_db_fetch_array($check_query);
        if (($check['expiry'] + (int)$SESS_LIFE) < time()) {
          $cookie_params = session_get_cookie_params();      
          xtc_setcookie(xtc_session_name(), '', time()-3600, '/', (xtc_not_null($current_domain_old) ? '.'.$current_domain_old : ''));
          xtc_setcookie(xtc_session_name(), '', time()-3600, DIR_WS_CATALOG, (xtc_not_null($current_domain_old) ? '.'.$current_domain_old : ''));
          xtc_setcookie(xtc_session_name(), '', time()-3600, DIR_WS_CATALOG, (xtc_not_null($current_domain) ? '.'.$current_domain : ''));
          xtc_setcookie(xtc_session_name(), '', time()-3600, $cookie_params['path'], $cookie_params['domain']);
        }
      }
    }

    // set the session cookie
    set_session_cookie(0, DIR_WS_CATALOG, (xtc_not_null($current_domain) ? '.'.$current_domain : ''), ((HTTP_SERVER == HTTPS_SERVER && $request_type == 'SSL') ? true : false), true, 'Lax');

    // set the session ID if it exists
    if (isset($_POST[xtc_session_name()])) {
      xtc_session_id($_POST[xtc_session_name()]);
    }
    elseif ($request_type == 'SSL' && isset($_GET[xtc_session_name()])) {
      if (!isset($_COOKIE[xtc_session_name()]) || $_GET[xtc_session_name()] != $_COOKIE[xtc_session_name()]) {
        xtc_session_id($_GET[xtc_session_name()]);
      }
    }

    // start the session
    $session_started = false;
    $truncate_session_id = false;
    if (SESSION_FORCE_COOKIE_USE == 'True') {
      xtc_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, DIR_WS_CATALOG, (xtc_not_null($current_domain) ? $current_domain : ''), ((HTTP_SERVER == HTTPS_SERVER && $request_type == 'SSL') ? true : false), true, 'Lax');
      if (isset($_COOKIE['cookie_test'])) {
        $session_started = xtc_session_start();
      }
    } elseif (CHECK_CLIENT_AGENT == 'true' && xtc_check_agent() == 1) {
      $truncate_session_id = true;
      $session_started = false;
      // Redirect search engines with session id to the same url without session id to prevent indexing session id urls
      if (stripos($_SERVER['REQUEST_URI'], xtc_session_name()) !== false || preg_match('/XTCsid/i', $_SERVER['REQUEST_URI'])) {
        redirect_invalid_session();
      }
    } else {
      $session_started = xtc_session_start();
    }

    // check for Cookie usage
    $cookie = false;
    if (isset($_COOKIE[xtc_session_name()])) {
      if ($http_domain == $https_domain || ENABLE_SSL === false) {
        $cookie = true;
      }
    }

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.225
    • Geschlecht:
    Re: PayPal-Cookie u.a. mit SameSite Attribute korrekt ausweisen?
    Antwort #10 am: 19. April 2021, 07:46:29
    Hast du deine Cookies auch mal gelöscht ?

    Gruss Gerhard

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Re: PayPal-Cookie u.a. mit SameSite Attribute korrekt ausweisen?
    Antwort #11 am: 19. April 2021, 10:36:28
    Hallo Gerhard,

    erstmal lieben Dank, dass Du Dich kümmerst!

    Ja, habe alles versucht - klar, auch Cookies gelöscht.

    An meiner PHP-Version kann es nicht liegen, oder? Ich habe die in den neuen Dateien referenzierte PHP 7.3 an den drei Stellen der zwei inc Dateien auch mal gegen meine 7.1.33 ausgetauscht. Dass in den zwei inc Dateien samesite auf None steht ist vermutlich ja auch richtig so. Bliebe noch ein Fehler in meiner oben angegebenen set_session_and_cookie_parameters.php wenn die beiden inc Dateien so übernommen werden können.
    Immerhin sind die flags für das Modsid jetzt auf true, true, none - ein Lax wäre aber schon prima.

    Anbei mein aktueller Webkonsolen-Screenshot.

    Was kann ich noch tun?

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.225
    • Geschlecht:
    Re: PayPal-Cookie u.a. mit SameSite Attribute korrekt ausweisen?
    Antwort #12 am: 19. April 2021, 13:25:51
    Hmm, dann kann ich dir nich anbieten, dass du dich über das Kontaktformular meldest.

    Gruss Gerhard

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Re: PayPal-Cookie u.a. mit SameSite Attribute korrekt ausweisen?
    Antwort #13 am: 19. April 2021, 15:12:59
    Hallo Gerhard,

    mache ich gleich. Danke Dir!
    9 Antworten
    12629 Aufrufe
    13. Januar 2011, 21:14:55 von Jiraporn
    114 Antworten
    91192 Aufrufe
    03. April 2022, 20:42:34 von Tomcraft
    0 Antworten
    281 Aufrufe
    25. September 2023, 12:18:29 von AGI