Veröffentlichungsdatum: 08. Oktober 2019
Änderungsdatum: 19. August 2024
weblication cms base cookies datenschutz ausnahme
Informationen zum Cookie-Handling in Weblication® Projekten.
Den Umgang mit Cookies in einem Weblication® Projekt finden Sie passend zur aktuellen Rechtsprechung nachfolgend erläutert.
In Weblication® schützen wir bereits in der Standardeinstellung den Besucher vor der Weitergabe seiner Daten an Dritte ohne Zustimmung. Auch setzt Weblication® keine Cookies mit personenbezogenen Daten oder zum Zweck der Verhaltensanalyse. Notwendige Hilfs-Cookies, die nach der Browsersession sofort gelöscht werden, finden nur dann Anwendung, wenn der Benutzer eine Datenschutzentscheidung trifft. Sie werden also nur gesetzt, um den Datenschutzhinweis nicht bei jedem Aufruf erneut bestätigen zu müssen und um sich zu merken, ob z.B. externe Komponenten geladen werden dürfen. Im Folgenden erfahren Sie, wie Sie auch auf diese Cookies und das obligatorische Session-Cookie verzichten.
Inzwischen gibt es auch die Möglichkeit, das Session-Cookie komplett zu
deaktivieren oder nur auf Wunsch zu aktivieren. Dies kann dann gemacht
werden, wenn keine speziellen Anwendungen (siehe unten) genutzt werden sollen. Nutzen Sie ohne
Cookies auch keine externen Komponenten, wie z.B. Youtube-Videos, Google
Maps oder externe Analyse-Tool, können Sie zudem auf den
Datenschutzhinweis verzichten.
Aktualisieren Sie Weblics® wie z.B. Akkordeon-Container, Registerlaschen-Container, etc. und Skripte zu externen Trackern bzw. Analyse-Software (Google Analytics, etc.), um diese abhängig von der Datenschutzeinstellung einzubinden oder nicht.
Sollten Sie externe Inhalte z.B. über einen iFrame einbinden, müssen Sie selber im Projekt prüfen und sicherstellen, daß über diese externen Inhalte keine Fremd-Cookies gesetzt werden. Verwenden Sie zum Einbinden externer Inhalte über Iframe daher am besten die aktuellste Version des Weblic® "Iframe, um entfernte Inhalte einzubinden", welches mit den aktuellen BASE Projekten zur Verfügung steht.
Ohne Cookiehinweis brauchen Sie im Standard keine Cookies.
Nach aktueller Rechtsprechung (Stand: Februar 2022) benötigen Sie übrigens für technisch erforderliche Cookies keinen Cookiehinweis. Ein Deaktivieren des Session-Cookies wie nachfolgend beschrieben ist daher nicht mehr erforderlich, um ohne Cookiehinweis auszukommen!
Klären Sie dies aber in jedem Fall mit dem zuständigen Datenschutzbeauftragten ab!
Durch folgende manuelle Konfigurationseinstellung können Sie für die Weblication® CMS Installation global einstellen, daß für Seitenbesucher kein WSESSIONID Cookie gesetzt (ab CMS 13.x).
Setzen Sie hierzu den Wert des onlyForLogin-Attributes innerhalb des cookie-Tags (zu sessions) auf den Wert "1".
Sofern das Tag in der default.wConf.php noch nicht vorhanden sein sollte, setzen Sie dies XML-Konform.
Speichern Sie die Konfigurationsdatei UTF-8 kodiert ab.
<wConf version="13"> ... <sessions> <cookie onlyForLogin="1"/> </sessions> ... </wConf>
Das Session-Cookie können Sie ab der Version 14 auch nur auf Nachfrage über folgende manuelle Conf-Einstellung aktivieren:
<wConf version="14"> ... <sessions> <cookie onlyAfterConfirmed="1"/> </sessions> ... </wConf>
In diesem Fall wird es erst gesetzt, nachdem auch das Cookie allowSessionCookies = 1 gesetzt wurde, also z.B. eine Cookie-Hinweis Abfrage bestätigt wird.
Durch folgende manuelle Konfigurationseinstellung können Sie für die Weblication® CMS Installation global einstellen, daß beim Logout / Abmelden nicht alle Cookies gelöscht werden (ab CMS 14.x). Auf diese Weise bleiben die Cookies für die gesetzte Auswahl zum Cookie-Hinweis erhalten.
Setzen Sie hierzu den Wert des clearOnLogout-Attributes innerhalb des cookie-Tags (zu sessions) auf den Wert "0".
Sofern das Tag in der default.wConf.php noch nicht vorhanden sein sollte, setzen Sie dies XML-Konform.
Speichern Sie die Konfigurationsdatei UTF-8 kodiert ab.
<wConf version="14"> ... <sessions> <cookie clearOnLogout="0"/> </sessions> ... </wConf>
Folgende Cookies könnten von Weblication® gesetzt und genutzt werden -
weitere von Entwicklern und Fremdsystemen erzeugte Cookies sind in der
Auflistung nicht berücksichtigt. Nach unserer Einschätzung können diese
Cookies als notwendig angesehen werden und sind somit nicht
zustimmungspflichtig. Allerdings ist die generelle Einschätzung
notwendiger Cookies auch bei Experten noch strittig:
Weitere von Entwicklern und Fremdsystemen erzeugte Cookies sind unabhängig von obiger Auflistung zu betrachten.
Aktuelle Weblication® CMS Projekte haben bereits im Standard eine Protokollierung zum Cookie-Hinweis umgesetzt. Dies erfolgt über eine Callback-Funktion in der design.js ("Callback, das nach dem Bestätigen und Ablehnen zum Laden externer Komponenten aufgerufen wird"). Darüber wird das privacyConsentStatus.php Skript aufgerufen, welches die vom Seitenbesucher getroffene Auswahl protokolliert und so als Protokoll-Datei im logs/privacyConsentStatus Verzeichnis ablegt.
Das Verzeichnis muss über einen entsprechenden Verzeichnisschutz gesichert sein, was bei Auslieferung im Standard schon so umgesetzt ist.
Aktuelle Versionen der Weblication® Projektgrundlage (BASE Classic und BASE (Mobile First)) sind bereits im Standard mit einem Cookie-Hinweis bzw. einer optionalen Abfrage zur Nutzung externer Komponenten ausgestattet. Schaltbar ist dies über die Projektkonfiguration.
Das Beispiel zeigt folgende Einstellung, womit also externe Tracker/Analysetools bestätigt werden müssen:
Cookie-, Datenschutzhinweis anzeigen: Ja
Laden von externen Trackern bestätigen lassen: Ja
Laden von sonstigen externen Ressourcen bestätigen lassen: Nein
Cookie-Arten einzeln auswählbar machen: Nein
<headline text="Datenschutz, Cookiehinweis"/> <variable description="Cookie-, Datenschutzhinweis anzeigen" key="show_cookie_info" type="char.yesno">yes</variable> <variable description="Laden von externen Trackern bestätigen lassen" key="confirm_before_track" type="char.yesno">yes</variable> <variable description="Laden von sonstigen externen Ressourcen bestätigen lassen" key="confirm_before_loadexternressources" type="char.yesno">no</variable> <variable description="Cookie-Arten einzeln auswählbar machen" key="confirm_cookie_types" type="char.yesno">no</variable> <variable description="Position des Layers" key="consentsbanner_position" type="char.select" values="|bottom" texts="Mittig|Unten"/> <variable description="Cookie-, Datenschutzhinweis zum Bestätigen blockiert Seite" key="consentsbanner_block_page" type="char.select" values="yes|" texts="Ja|Nein">yes</variable> <info>Wenn Sie externe Tracker bzw. Ressourcen erst nach einer Bestätigung laden wollen, müssen Sie den Cookie-, Datenschutzhinweis anzeigen, damit der Besucher dies bestätigen kann.</info>
In BASE-Projekten, welche diese Umsetzung noch nicht beinhalten, kann dies über das Weblic® "Datenschutz Hinweis" nachgerüstet werden.
Beachten Sie bei BASE Classic Projekten, daß zumindest eine BASE 2.x Version als Grundlage bestehen muss. Der Aufruf des Cookie-Templates muss in äteren BASE 2.x Projekten manuell in der includes.global.php und ggf. standard.wDocument.php nachgezogen werden (vergleiche aktuelle BASE Classic Projektgrundlage (z.B. Onlinedemo BASE Classic)). Ebenso ist es erforderlich, den Eintrag in der Projektkonfiguration wie oben angegeben zu setzen und in der design.css ggf. die bisherige CSS-Definitionen für den cookieNotice durch die aktuelle Umsetzung zu ersetzen. Das Nachrüsten der Einträge in der Projektkonfiguration kann ggf. auch bei etwas älteren Mobile First Projekten erforderlich sein - zumindest was weitere Einstellungen betrifft.
Zur Protokollierung der Datenschutzhinweis Auswahl sind zu die zuvor im Artikel genannten Dateien erforderlich.
Es besteht keine Gewährleistung beim Nachrüsten dieser Funktion.
Nachfolgend finden Sie beispielhaft den Quelltext-Auszug eines BASE Classic Projektes mit alter und neuer Umsetzung, bei dem die cookieNotice-Umsetzung in der includes.global.php hinterlegt war. Je nach Projektumsetzung und -alter kann die Angabe auch direkt als manuelle HTML-Einbindung in der Portal-Seite stattgefunden haben oder ggf. noch gar nicht vorhanden sein.
Die Cookie-Umsetzung ist im Standard innerhalb des bodyPost-Templates der includes.global.php abgelegt, welches über die standard.wDocument.php aufgerufen wird. Wenn es dieses bodyPost-Template in Ihrem Projekt nicht gibt, handelt es sich um eine doch ältere BASE Classic, weshalb Sie den Code am besten direkt in der standard.wDocument.php vor dem schliessenden body-Tag und noch vor dem weblicationPanel-Template Aufruf einbinden.
<xsl:if test="php:functionString('wVariables::getValue', 'show_cookie_info', $wGlobalProjectPath) = 'yes'"> <xsl:if test="php:functionString('wRepository::documentExists', concat($wProjectPath, '/wGlobal/content/privacy/cookie-notice.php'))"> <div id="cookieNotice"> <xsl:value-of disable-output-escaping="yes" select="document(concat($wDocumentRoot, $wProjectPath, '/wGlobal/content/privacy/cookie-notice.php'))/wd:document/wd:group/wd:item/wd:fragment[@id = 'code']/text()"/> <wsl:buttonEdit id="buttonEditCookieNotice" path="{concat($wProjectPath, '/wGlobal/content/privacy/cookie-notice.php')}" icon="edit" title="Cookie-Hinweis bearbeiten"/> </div> </xsl:if> </xsl:if>
<xsl:if test="php:functionString('wVariables::getValue', 'show_cookie_info', $wGlobalProjectPath) = 'yes'"> <xsl:variable name="pathCookieNotice"><xsl:choose> <xsl:when test="php:functionString('wVariables::getValue', 'confirm_cookie_types', $wGlobalProjectPath, '') = 'yes'">/wGlobal/content/privacy/cookie-notice-full-opt-in-select.php</xsl:when> <xsl:when test="php:functionString('wVariables::getValue', 'confirm_before_loadexternressources', $wGlobalProjectPath, '') = 'yes'">/wGlobal/content/privacy/cookie-notice-full-opt-in.php</xsl:when> <xsl:when test="php:functionString('wVariables::getValue', 'confirm_before_track', $wGlobalProjectPath, '') = 'yes'">/wGlobal/content/privacy/cookie-notice-tracking.php</xsl:when> <xsl:otherwise>/wGlobal/content/privacy/cookie-notice.php</xsl:otherwise> </xsl:choose></xsl:variable> <xsl:variable name="classPosition" select="php:functionString('wVariables::getValue', 'consentsbanner_position', $wGlobalProjectPath, '', 'wDoNotAdd')"/> <xsl:variable name="classBlockPage"><xsl:if test="php:functionString('wVariables::getValue', 'consentsbanner_block_page', $wGlobalProjectPath, '', 'wDoNotAdd') = 'yes'">blockPage</xsl:if></xsl:variable> <xsl:if test="php:functionString('wRepository::documentExists', concat($wProjectPath, $pathCookieNotice))"> <xsl:choose> <xsl:when test="php:functionString('wVariables::getValue', 'confirm_before_loadexternressources', $wGlobalProjectPath, '') = 'yes'"> <div id="cookieNotice" class="confirmBeforeLoadExternRessources {$classPosition} {$classBlockPage}"> <div id="cookieNoticeInner"> <div> <div id="cookieNoticeCloser" onclick="closeCookieNotice()"/> <xsl:apply-templates select="document(concat($wDocumentRoot, $wProjectPath, $pathCookieNotice))/wd:document/wd:group/wd:item"/> <wsl:buttonEdit id="buttonEditCookieNotice" path="{concat($wProjectPath, $pathCookieNotice)}" icon="edit" title="Cookie-Hinweis bearbeiten"/> </div> </div> </div> </xsl:when> <xsl:when test="php:functionString('wVariables::getValue', 'confirm_before_track', $wGlobalProjectPath, '') = 'yes'"> <div id="cookieNotice" class="confirmBeforeTrack {$classPosition} {$classBlockPage}"> <div id="cookieNoticeInner"> <div> <div id="cookieNoticeCloser" onclick="closeCookieNotice()"/> <xsl:apply-templates select="document(concat($wDocumentRoot, $wProjectPath, $pathCookieNotice))/wd:document/wd:group/wd:item"/> <wsl:buttonEdit id="buttonEditCookieNotice" path="{concat($wProjectPath, $pathCookieNotice)}" icon="edit" title="Cookie-Hinweis bearbeiten"/> </div> </div> </div> </xsl:when> <xsl:otherwise> <div id="cookieNotice" class="infoOnly {$classPosition} {$classBlockPage}"> <div id="cookieNoticeInner"> <div> <xsl:apply-templates select="document(concat($wDocumentRoot, $wProjectPath, $pathCookieNotice))/wd:document/wd:group/wd:item"/> <wsl:buttonEdit id="buttonEditCookieNotice" path="{concat($wProjectPath, $pathCookieNotice)}" icon="edit" title="Cookie-Hinweis bearbeiten"/> </div> </div> </div> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:if>
Die CSS-Definition innerhalb der design.css finden Sie nachfolgend zu einer BASE Classic 2.x angeführt.
Beachten Sie, daß es Projekt individuell auch anders definiert sein konnte und dies nur ein Beispiel aus dem Standard ist!
/* Cookie Hinweis */ #cookieNotice {display:none;position:fixed;overflow:hidden;z-index:1000;bottom:-80px;left:0;width:100%;background-color:#d0d0d0;border-top:solid 1px #a0a0a0;padding:10px;text-align:center;} .pagestatus-loaded #cookieNotice {display:block;bottom:0;} #cookieNotice #cookieNoticeCloser {margin-left:8px;} #cookieNotice #buttonEditCookieNotice {position:absolute;top:4px;right:48px;}
/* Cookie Hinweis */ .bodyBlank #cookieNotice { display: none !important; } #cookieNotice { display: none; position: fixed; z-index: 120; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; background: none; } .pagestatus-loaded #cookieNotice { display: block; } #cookieNotice #cookieNoticeInner { pointer-events: auto; display: flex; align-items: center; justify-content: center; width: 100vw; height: 100vh; } #cookieNotice #cookieNoticeInner > div { position: relative; left: 0; top: 0; width: 100vw; height: 100vh; -webkit-overflow-scrolling: touch; overflow-y: auto; background-color: #F0F0F0; border-top: solid 1px #DDDDDD; box-shadow: 0 0 20px rgba(0, 0, 0, 0.6); padding: 2rem; text-align: center; } @media (min-width: 768px) { #cookieNotice #cookieNoticeInner > div { width: 50vw; height: auto; max-height: 96%; } } #cookieNotice #cookieNoticeInner .elementInfo { padding: 1rem; } #cookieNotice #cookieNoticeInner .elementInfo * { font-size: 0.8rem; line-height: 120%; } #cookieNotice #cookieNoticeInner a { white-space: nowrap; } #cookieNotice #cookieNoticeInner button { margin-bottom: 0.3rem; } #cookieNotice #buttonEditCookieNotice { position: absolute; top: 32px; right: 4px; } #cookieNotice #cookieNoticeSelection .cookieNoticeSelectionEntry { display: block; padding-right: 0.5rem; font-size: 0.9rem; } #cookieNotice #cookieNoticeSelection .cookieNoticeSelectionEntry.cookieNoticeSelectionEntryEssential { font-weight: bold; } #cookieNotice #cookieNoticeSelection .cookieNoticeSelectionEntry input, #cookieNotice #cookieNoticeSelection .cookieNoticeSelectionEntry label { vertical-align: middle; line-height: 20px; } #cookieNotice #cookieNoticeSelection .cookieNoticeSelectionEntry label { font-size: 0.9rem; color: #000000; padding-left: 4px; } #cookieNotice #cookieNoticePrivacyDetails { padding: 0 0 0.8rem 0; } #cookieNotice #cookieNoticePrivacyDetails a { color: #a0a0a0; text-decoration: none; } #cookieNotice #containerRememberDataSecurityPreferences input, #cookieNotice #containerRememberDataSecurityPreferences label { vertical-align: middle; line-height: 20px; } #cookieNotice #containerRememberDataSecurityPreferences label { font-size: 0.9rem; color: rgba(0, 0, 0, 0.5); padding-left: 4px; } #cookieNotice div#cookieNoticeCloser { cursor: pointer; box-sizing: border-box; display: none; position: absolute; z-index: 3; right: 0; top: 0; width: 32px; height: 32px; font-size: 0; color: transparent; border: none; background-color: transparent; transition: transform 0.3s ease-in-out; } #cookieNotice div#cookieNoticeCloser:hover { transition: all 0.3s linear; } #cookieNotice div#cookieNoticeCloser:before { content: ""; position: absolute; left: 0; width: 26px; height: 11px; margin: 6px 0 0 3px; border-top: solid 2px #000000; transform: rotate(45deg); transform-origin: 2px 5px; } #cookieNotice div#cookieNoticeCloser:after { content: ""; position: absolute; left: 0; width: 26px; height: 20px; margin: 6px 0 0 4px; border-bottom: solid 2px #000000; transform: rotate(-45deg); transform-origin: 2px 16px; } #cookieNotice.hasOpenedByClick #cookieNoticeCloser { display: block; } #cookieNotice.infoOnly #cookieNoticeCloser { display: block; } #cookieNotice.infoOnly button#cookieNoticeCloser { margin-left: 5px; display: inline-block; } #cookieNotice.bottom #cookieNoticeInner { position: fixed; display: block; bottom: 0; width: 100%; height: auto; } #cookieNotice.bottom #cookieNoticeInner > div { position: relative; left: 0; bottom: 0; width: 100%; height: auto; -webkit-overflow-scrolling: touch; overflow-y: auto; background-color: #F0F0F0; border-top: solid 1px #DDDDDD; box-shadow: 0 0 20px rgba(0, 0, 0, 0.6); padding: 1rem; text-align: center; } #cookieNotice.bottom #cookieNoticeCloser { display: block; } #cookieNotice.blockPage { pointer-events: auto; background: rgba(0, 0, 0, 0.2); } #embed_cookieNotice { display: none; }
Die Definition innerhalb der Projektkonfiguration finden Sie weiter oben beschrieben.
Für das Einbinden externer Komponenten (z.B. Tracking-Codes wie Google Analytics o.ä. und auch Karten-Anwendungen wie Google Maps und OpenStreetMap, etc.) müssen Sie die jeweilige Anwendung auf aktuellsten Weblic® 2.x Stand bringen bzw. dort manuell die Abfrage nachrüsten.
Um von beliebiger Stelle aus die Datenschutzeinstellungen erneut aufrufen zu können, binden Sie einen Link mit folgendem Ziel ein:
javascript:openCookieNotice();void(0)
Sie finden dies in der aktuellen BASE über die design.js als Funktion mitgeliefert und z.B. in der Datenschutz-Seite und Meta-Navigation beispielhaft umgesetzt.
Prüfen Sie abschliessend das gesamte Projekt auf korrekte datenschutzrechtliche Umsetzung!
Der Cookie-Hinweis kann für bestimmte Seiten deaktiviert werden, was z.B. bei der Seite für die Benutzerregistrierung Sinn machen kann.
Mit aktueller ui.js und cookieNotice.wGlobal.php stehen Ihnen für die Einrichtung solcher Ausnahmen zwei Möglichkeiten zur Verfügung.
doNotShowCookieNotice = '1';
... <wd:object type="default"> ... <wd:data id="doNotShowCookieNotice" type="char.default">1</wd:data> </wd:object> ...