Technische Umsetzung der Cookie-Richtlinie

This discussion was created from comments split from: EuGH-Urteil: Opt-in-Pflicht für Cookies.

Hallo, 

ich häng mich mal hier rein, da ich vom Support auf den Eintrag verwiesen wurde.

Ich entwickle ein Plugin, dass bereits die 5.6.3 Cookie geschichte implementiert und ich registriere die Cookies.

Meine Frage ist nur, wie kann ich das abfragen, ob im neuen Consent Tool mein Cookie auch freigegeben ist, damit ich den Code ausliefern darf?

Aktuell frage ich ab ob „allowCookie“ gesetzt ist und dann wird mein Code ausgeliefert der Cookies setzt. Alles DSVGO konform. Ab 5.6.3 kann der Benutzer aber sagen, das er STATISTIC Cookies (so habe ich meine Cookies angemeldet) nicht zulässt bzw. er könnte sie zulassen aber speziel mein Tracking ausschließen.

Wird es in 5.6.3 noch das „allowCookie“ geben und was für eine Aussagekraft hat es dann eigentlich, wenn alles viel spezifizierter definiert ist? Wie kann ich feststellen, ob mein Tracking „allowed“ ist?

Auch das Google Analytics Tool von der Anleitung https://docs.shopware.com/de/shopware-5-de/plugins/plugin-google-analytics das mittlerweile ja nicht mehr direkt im Core ist steht ja vor dem Problem. Und ich denke das viele dieses Plugin vor allem am Anfang verwenden.

Hat da schon irgend jemand ein Feedback von Shopware entwickler Team?

Gruß
Mardl

 

Moin @daMardl‍,

hast du schon einen Blick auf den dazugehörigen Doku Eintrag geworfen? :slight_smile:
Der dürfte deine Frage so weit beantworten.
 

Meine Frage ist nur, wie kann ich das abfragen, ob im neuen Consent Tool mein Cookie auch freigegeben ist, damit ich den Code ausliefern darf?

In PHP einfach, indem du deinen Cookie nach Anleitung registrierst. Fertig. Da musst du dann nichts mehr machen.
In Javascript kannst du dafür die Methode _$.getCookiePreference(cookieName) _nutzen, die dir “true” oder “false” zurück liefert.
 

Wird es in 5.6.3 noch das “allowCookie” geben und was für eine Aussagekraft hat es dann eigentlich, wenn alles viel spezifizierter definiert ist? Wie kann ich feststellen, ob mein Tracking “allowed” ist?

Je nach Einstellung wird der auch weiterhin genutzt. Im Prinzip immer dann, wenn du einen “Alle akzeptieren” Button hast.

Wenn du konkretere Fragen hast, gerne bei mir melden. :slight_smile:

Lieben Gruß
Patrick Stahl  Shopware

@Patrick Stahl schrieb:

Moin @daMardl‍,

hast du schon einen Blick auf den dazugehörigen Doku Eintrag geworfen? :slight_smile:
Der dürfte deine Frage so weit beantworten.
 

Meine Frage ist nur, wie kann ich das abfragen, ob im neuen Consent Tool mein Cookie auch freigegeben ist, damit ich den Code ausliefern darf?

In PHP einfach, indem du deinen Cookie nach Anleitung registrierst. Fertig. Da musst du dann nichts mehr machen.
In Javascript kannst du dafür die Methode _$.getCookiePreference(cookieName) _nutzen, die dir „true“ oder „false“ zurück liefert.
 

Wird es in 5.6.3 noch das „allowCookie“ geben und was für eine Aussagekraft hat es dann eigentlich, wenn alles viel spezifizierter definiert ist? Wie kann ich feststellen, ob mein Tracking „allowed“ ist?

Je nach Einstellung wird der auch weiterhin genutzt. Im Prinzip immer dann, wenn du einen „Alle akzeptieren“ Button hast.

Wenn du konkretere Fragen hast, gerne bei mir melden. :slight_smile:

Lieben Gruß
Patrick Stahl  Shopware

Hallo Patrick,

ja, die Doku habe ich gelesen und auch bereits so implementiert. Und das ich mit $.getCookiePreference(cookieName) es Clintseitig abfragen kann ist mir soweit auch klar. Die Frage ist, was der "cookieName ist, das muss ich mal testen. Ich hoffe das es Name der Gruppe ist (aus CookieStruct) und nicht der spezifische Cookie name. 

Aber die Frage war, wie mache ich das Serverseitig? Ich möchte ja meinen Code garnicht erst im tpl ausliefern, wenn der cookie bzw. die registrierte Gruppe nicht aktiviert ist.

Einfach beispiel:

Mein Plugin liefert im header.tpl ein 

$collection->add(new CookieStruct(
        'bad-tracking',
        '/^_bad/',
        'Bad Tracking Description',
        CookieGroupStruct::STATISTICS
    ));</code></pre>

<p>wie kann ich serverseitig abfragen, ob mein plguin überhaupt berechtigt ist.</p>

<p>Oder denke ich falsch und es ist egal, wenn tracking snippets eingebunden werden, solange einfach nur keine Cookies gespeichert werden? DSGVO bezieht sich ja immer auf die Cookies, aber im Grunde werden ja immer Daten an die Tracking Betreiber gesendet.<br />
<br />
Die 2-Klick Lösungen gehen ja genau den Weg, dass sie die Scripts erst dann ausliefern, wenn man sie auch haben will.<br />
<br />
Ist mein Ansatz falsch und ich muss das Ausliefern grundsätzlich ins Frontend verlagern, wo ich über $.getCookiePreference(cookieName) die Scripte "nachladen" muss?</p>

<p> </p>

<p>Bin gespannt auf das neue CookieConsent Modul von Shopware. Im Grunde sollte es ein leichtes für Shopware sein sich die nicht registrierten Cookies als "undefined" zu merken und zu entfernen und dann im Stil von <a href="https://www.cookiebot.com/de/">https://www.cookiebot.com/de/</a> die "undefined" Cookies im Backend den Shopbetreiber selber zuzuordnen lassen. Dann hätte sich auch das Problem behoben wenn einer youtube & co einbindet, weil dann diese Cookies im Backend neu zugeordnet werden können. Die Plugin-Entwickler können ja nur auf die eigenen Cookies achten, aber wenn youtube & co einfach neue Cookies hinzunimmt, dann bleibt zum Schluß das Problem immer beim Shopbetreiber.<br />
Evtl. funktioniert das z.B. Video nicht weil es ein technisches Cookie ist, dass zwingend benötigt wird und der Shopbetreiber hat keine Möglichkeit es in die Liste mit aufzunehmen und Shopware löscht es einfach raus. Wie gesagt, bin gespannt was das Teil dann wirklich kann, so wie es aussieht ist da noch potential für Kundenzufriedenheit.</p>

<p>Gruß<br />
Martin </p>

<p> </p>

<p> </p>
1 Like

Könnte das ggf einer von Shopware - also [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ Grin - aufsplitten?
Die Fragen zur „technische Umsetzung“ haben ja „hier“ eigentlich nichts zu suchen, könnten aber auch für Andere (später) interessant werden  Thumb-Up

@sonic‍

Du meinst mit technischer Umsetzung meine Code Beispiele?

Ja da kannst du recht haben. Witzigerweise konnte mir der Shopware Plugin Support auch nicht weiterhelfen und hat mich direkt auf diesen Forumseintrag verwiesen :wink:

Mal schauen, ob [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ was dazu sagen kann.

 

Moin @daMardl‍,

im Prinzip soll das Tool ja wirklich nur das Thema “Cookies” behandeln, nicht ganze Scripte oder Templates davon abhalten geladen zu werden.

Wenn das deine Business Logik allerdings benötigt, kannst du dir diese Methode mal anschauen.
Den zweiten Parameter, also die Präferenzen, bekommst du ja wieder aus dem Request, ist ja auch nur ein eigener Cookie.

Hier kannst du dir anschauen, wie wir das im Core gelöst haben, also woher wir die Cookie Einstellungen holen und dass wir Sie simpel an die o.g. Methode reichen.
Hilft dir das weiter?

Wegen der Thematik “Unbekannte Cookies” bzw. “YouTube”:
Im ersten Wurf wird das nicht abgedeckt sein und auch keine UI dazu im Backend zur Verfügung stehen.
Das heißt aber nicht, dass wir das auch nie machen werden, die Nachfrage diesbezüglich ist ja vorhanden und wir werden da sicherlich nochmal drüber schauen müssen.
Mal ganz davon abgesehen, dass wir ohnehin technisch nicht die Möglichkeit haben, Cookies zu löschen, die von anderen Domains kommen.

Lieben Gruß
Patrick  Shopware

Hi @daMardl‍,

wenn du möchtest, dass auch Cookies verhindert werden, die über externe Skripte gesetzt werden, kannst du alternativ auch gerne mal das Store Plugin https://store.shopware.com/acris88165720436/eu-cookie-richtlinie-pro-automatischer-cookie-erkennung.html testen. Hier hast du auch eine schöne Backend Verwaltung dabei, wo alle Cookies, die erkannt werden auch direkt gelistet werden. Diese kannst du dann einsehen und bei Bedarf auch bearbeiten.

Liebe Grüße,

Christoph

Gibt es einen “Weg” - von mir aus auch im eigenen Plugin - die aufgelisteten “Technischen Cookies” ein wenig zu reduzieren?

Ausgewählter Shop  - wirklich gesetzt und notwendig, wenn es gar keine weiteren Sub- Sprachshops gibt? Wenn nein -> weg damit
Individuelle Preise  - ist doch so gar nicht Bestandteil vom Core, warum muss das vom Core gesetzt werden, und nicht vom Swag-Plugin? -> weg damit
Währungswechsel  - und wenn es nur eine Währung gibt, wird dieses Cookie dann dennoch benötigt und gesetzt? Wenn nein -> weg damit

Wenn ich per event meine Cookies einimpfen kann, kann ich auch auf Plugin-Ebene obige Einträge für den Consent-Manager wieder entfernen?

Man muss den “Kunden” ja nicht auf Kekse aufmerksam machen, die es ggf. gar nicht gibt - und geben wird  Wink
 

@sonic schrieb:
Individuelle Preise  - ist doch so gar nicht Bestandteil vom Core, warum muss das vom Core gesetzt werden, und nicht vom Swag-Plugin? -> weg damit
 

Das ist Bestandteil des Cores, da es hier um bspw. Preise geht die sich bei Länderwechsel ändern. Sobald du dich einloggst bekommst du einen ConextCookie der quasi für die Bestimmung der Steuerregeln usw. genutzt wird. Der wird also definitiv immer gesetzt und sollte auch da aufgeführt werden.

Für alles andere kann ggf. der Kollege etwas zu sagen, ich schick ihm das mal rüber. 

1 Like

Ah - dann habe ich den einen Keks falsch verstanden - THX für die schnelle Aufklärung  Thumb-Up

Moin @sonic‍,

dafür kannst du dieses Event nutzen.

Du bekommst dort eine CookieGroupCollection zurück, aus der du dann mit der Methode getGroupByName bspw. nur die technische Gruppe mitsamt Cookies finden kannst.

Hilft dir das weiter?

Lieben Gruß
Shopware  Patrick Stahl

1 Like

Hilft dir das weiter?

Denke schon. Wenn nicht, melde ich mich nächstes Jahr wieder hier  Wink
THX für den Denkanstoß  Thumb-Up

Moin @sonic‍,

damit du nicht so viel basteln musst:

$cookieCollection = $eventArgs->getReturn();
$technicalCookieGroup = $cookieCollection->getGroupByName(CookieGroupStruct::TECHNICAL);
$technicalCookieCollection = $technicalCookieGroup->getCookies();
$technicalCookieCollection->removeElement($technicalCookieCollection->getCookieByName('x-cache-context-hash'));

return $cookieCollection;

Der würde jetzt bspw. den Cookie ‚x-cache-context-hash‘ entfernen. :slight_smile:
Das ist jetzt zwar blind runter programmiert, aber so in Etwa dürfte das laufen.

Besten Gruß
Shopware  Patrick Stahl

1 Like

*WOW*
Das werde ich die Tage mal testen. So langsam habe ich jetzt wieder was mehr Zeit für “Shopware”  Wink
Thumb-Up Besten Dank  Thumb-Up

Besser spät als nie [@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl „Patrick Stahl“)‍ - danke, so kann man das Cookie aus dem Consenttool entfernen  Thumb-Up

Jetzt möchte ich es aber nicht löschen, sondern verschieben - und zwar die „Endgeräteerkennung“ von Statistik in die „technische Cookies“.

Mein Weg:
 

public static function getSubscribedEvents()
{
    return [
            'CookieCollector_Filter_Collected_Cookies' => 'onFilterCollectedCookies',
            'CookieCollector_Collect_Cookies' => 'addTechnicalCookie'
           ];
}

public function onFilterCollectedCookies(\Enlight_Event_EventArgs $args)
{     
    $cookieCollection = $args->getReturn();

    $statisticCookieGroup = $cookieCollection->getGroupByName(CookieGroupStruct::STATISTICS);
    $statisticCookieCollection = $statisticCookieGroup->getCookies();
    $statisticCookieCollection->removeElement($statisticCookieCollection->getCookieByName('x-ua-device'));
               
    return $cookieCollection;
}

public function addTechnicalCookie(): CookieCollection
{
    $snippetNamespace = Shopware()->Container()->get('snippets')->getNamespace('frontend/cookie_consent/cookies');

    $collection = new CookieCollection();
    $collection->add(new CookieStruct('x-ua-device', '/^x\-ua\-device$/', $snippetNamespace->get('device'), CookieGroupStruct::TECHNICAL));

    return $collection;
}

Im Consenttool wird es „optisch“ verschoben. Allerdings wird es dennoch erst gesetzt, wenn ich die Einstellungen einmal speicher.

War als Workaround zu https://forum.shopware.com/discussion/comment/270007/#Comment_270007 gedacht. Aber warum muss ich bei „technischen Cookies“ dennoch erst speichern?

[EDIT]
Ich kann es drehen und wenden wie ich will, es hat keine Wirkung. Ich muss zunächst immer einmal speichern. Daraus folger ich: Im Core sind die Core-Cookies fest verdrahtet, da wird nicht die Gruppe berücksichtigt. Sehr bedauerlich…
Dann macht der Filter nicht viel Sinn, wenn ich Cookies dort zwar löschen kann, aber die Gruppen nicht berücksichtigt werden.

Hallo zusammen,

kann mir jemand sagen, welche Cookies ein „normaler“ Shopware-Shop setzt, also ohne zusätzliche Plugins und ohne das ein Cookie-Banner oder Cookie-Hinweis aktiv ist?

Werden dann nur technisch notwendige Cookies gesetzt, oder auch „Komfort-Cookies“? Könnte man einstellen, das ausschließlich technisch notwendige Cookies gesetzt werden - und gar keine anderen Cookies? Also das alle anderen Cookies immer deaktiviert sind und nur die technisch wirklich notwendigen aktiv sind?