Was bedeutet die DSGVO für Browsergames?

von DaBu, am 22.05

Am 25. Mai tritt die neue Datenschutz-Grundverordnung in Kraft. Obwohl dieses Datum seit etwa 2 Jahren feststeht haben noch immer nicht alle entsprechende Vorkehrungen getroffen oder wissen zum Teil nicht einmal was sie tun müssen.

Ich selbst habe erst in den letzten Tagen und Wochen entsprechend auf diversen Projekten die Datenschutzbestimmungen nachgezogen und Cookie Disclaimer eingebaut. Auch wenn dies klar sein sollte: ich bin selbst kein Jurist und deswegen muss man wie immer im Zweifel seinen Anwalt fragen.

Bin ich betroffen?

Generell ist wohl jeder betroffen, der mehr wie eine reine statische HTML Seite anbietet und keinerlei Serverlogs speichert.

Versuche die folgenden Fragen mit Ja oder Nein zu beantworten, wenn du eine davon mit Ja beantwortet kannst, brauchst du wahrscheinlich Datenschutzbestimmungen.

  • Nutze ich eine Software für Tracking? (z.B. Google Analytics oder Piwik)
  • Binde ich irgendwelche Inhalte von einem externen Anbieter ein? (Bilder, CSS, JS, YouTube, Adsense oder ähnliches)
  • Speichere Verarbeite ich personenbezogene Daten* in meinem System?
  • Versende ich Newsletter an einen Kundenstamm?
  • Gibt es ein Kontaktformular? (Dies muss nicht zwingend etwas speichern, Mailversand reicht schon aus)
  • Schreibt mein Server Logs?

* Personenbezogen Daten sind Daten mit welchen ich oder dritte herausfinden können welche Person oder welcher Anschluss dahinter steckt. Eine IP-Adresse ist damit beispielsweise personenbezogen, da eine dritte Person (der Netzbetreiber) sagen kann, wann welche IP-Adresse an welchem Anschluss geschaltet wurde.

Server Logs

Server Logs, bzw. eigentlich Access Logs sind Log Dateien welche der Webserver (meist Apache oder Nginx) beim Abrufen von Inhalten schreibt. Ein solcher Eintrag kann in etwa wie folgt aussehen.

88.99.13.211 - - [22/May/2018:22:40:49 +0200] "GET /charts/ HTTP/1.0" 200 15300 "-" "Uplybot/0.1 (+http://github.com)"

Nun gibt es zwei Möglichkeiten: Entweder stellst du deinen Webserver so um, dass die IP-Adresse nicht mehr gespeichert wird oder es muss mit einer sinnvollen Begründung in die Datenschutzbestimmung aufgenommen werden. Selbst Wenn man keine IP-Adresse speichert, sie wird trotzdem vom System verarbeitet und muss deswegen in den Datenschutzbestimmungen aufgenommen werden.

Nginx IP-Adresse entfernen

Um in Nginx die IP-Adresse aus den Logs herauszulesen, benötigen wir eine neue Log Format Methode.

http {
    ....
    log_format anonymized '[$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent"';
    ....
}

Zusätzlich muss noch in dem gewünschten vHost das Schreiben der Access Logs angepasst werden.

access_log /path/to/access_logs.log anonymized;

Cookies

Sollten auf deiner Webseite Cookies gesetzt werden - sei es durch ein Tracking Tool oder wegen etwas selbstgebautem - so muss ein entsprechender Disclaimer angezeigt werden. So einen Disclaimer sollte man am besten nicht von einem externen CDN Dienst nachladen, sonst muss dieser mit in die Datenschutzbestimmungen aufgenommen werden.

Wer gerne einen Disclaimer einbauen möchte, welcher keinerlei Abhängigkeiten zu einem Javascript-Framework hat, kann gerne unseren Code hier verwenden und beliebig anpassen.

(function () {
    var cookieExpireDays = 60;
    var cookieName = 'cookie_disclaimer';
    var disclaimerBoxId = 'cookie_disclaimer';
    var defaultLanguage = 'de';

    var languages = {
        'de': {
            'text': 'Cookies helfen uns, unsere Webinhalte zu verbessern und ein personalisiertes Erlebnis zu bieten. Durch die Nutzung dieser Website stimmst du der Verwendung von Cookies zu. {{link}}.',
            'link': 'https://webgamers.de/privacy-policy',
            'link_text': 'Mehr erfahren',
            'button_text': 'OK'
        },
    };

    /**
     * detect current browser language
     *
     * @returns {*}
     */
    function getBrowserLanguage() {
        if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
            return undefined;
        }
        var browserLang = window.navigator.languages ? window.navigator.languages[0] : null;
        browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
        if (browserLang.indexOf('-') !== -1) {
            browserLang = browserLang.split('-')[0];
        }
        if (browserLang.indexOf('_') !== -1) {
            browserLang = browserLang.split('_')[0];
        }
        return browserLang;
    }

    function setDisclaimerCookie() {
        var d = new Date();
        d.setTime(d.getTime() + (cookieExpireDays * 24 * 60 * 60 * 1000));
        var expires = 'expires=' + d.toUTCString();
        document.cookie = cookieName + '=' + 1 + ';' + expires + ';;path=/';
    }

    function isDisclaimerCookieSet() {
        return document.cookie.indexOf(cookieName + '=') >= 0;
    }

    function removeDisclaimer() {
        setDisclaimerCookie();

        var elem = document.getElementById(disclaimerBoxId);
        elem.parentNode.removeChild(elem);
    }

    function buildDisclaimerBox() {
        var text = null;
        if (typeof languages[getBrowserLanguage()] === 'undefined') {
            text = languages[defaultLanguage];
        } else {
            text = languages[getBrowserLanguage()];
        }

        var link = '<a href="'+text.link+'" style="text-decoration: underline;color:#ffffff;">'+text.link_text+'</a>';
        text.text = text.text.replace('{{link}}', link);

        var outerDiv = document.createElement('div');
        outerDiv.style.position = 'fixed';
        outerDiv.style.left = '0';
        outerDiv.style.right = '0';
        outerDiv.style.bottom = '0';
        outerDiv.style.width = '100%';
        outerDiv.style.background = 'rgba(0,0,0,0.8)';
        outerDiv.style.color = '#cccccc';
        outerDiv.style.padding = '15px';
        outerDiv.style.zIndex = '36000';
        outerDiv.style.boxSizing = 'border-box';
        outerDiv.id = disclaimerBoxId;
        var table = document.createElement('table');
        table.attributes.border = '0';
        table.attributes.cellspacing = '0';
        table.attributes.cellpadding = '0';
        outerDiv.appendChild(table);
        var tr = document.createElement('tr');
        table.appendChild(tr)
        var td = document.createElement('td');
        td.innerHTML = text.text;
        tr.appendChild(td);
        td = document.createElement('td');
        td.style.width = '10px';
        td.innerHTML = '&nbsp;';
        tr.appendChild(td);
        td = document.createElement('td');
        tr.appendChild(td);
        var span = document.createElement('span');
        span.style.borderRadius = '3px';
        span.style.backgroundColor = '#ff4727';
        span.style.padding = '0.3rem 0.5rem';
        span.style.cursor = 'pointer';
        span.style.color = '#ffffff';
        span.style.fontWeight = 'bold';
        span.innerHTML = text.button_text;
        span.addEventListener('click', removeDisclaimer);
        td.appendChild(span);
        document.body.appendChild(outerDiv);
    }

    if (!isDisclaimerCookieSet()) {
        buildDisclaimerBox();
    }
})();

Die Einbindung könnte zum Beispiel wie folgt aussehen.

<script type="text/javascript" src="path/to/cookie-disclaimer.js"></script>

Externe Bilder oder Styles

Was vielen und mir selbst bis vor wenigen Tagen nicht ganz klar war, ist, dass jede Ressource, welche von Extern bezogen wird, entsprechend in den Datenschutzbestimmungen verewigt werden muss. Alternativ muss man diese ausbauen. Besonders viel Spaß macht so etwas bei Foren. Dort sehe ich selbst nur zwei Wege.

Proxy einbauen

Einige Foren bieten selbst oder über Plugins die Möglichkeit von Nutzern eingebundene Inhalte automatisch herunterzuladen und direkt auf dem eigenen Server abzulegen. Für die aktuelle Generation der Woltlab Forensoftware ist dies bereits enthalten. Für die vorherige Version gibt es hier ein Plugin: https://pluginstore.woltlab.com/file/1919-imageproxy/

Externe Ressourcen verbieten

Sollte man den Weg des Proxy nicht beschreiten wollen, so kann man immer noch die radikale Variante wählen und alle externen Inhalte herauswerfen. In einem phpBB oder Woltlab Forum würde man die BB-Codes für Bilder deaktivieren. Informationen für Nutzer der Woltlab Forensoftware gibt es hier. https://www.woltlab.com/article/105-umsetzung-der-dsgvo/

Datenschutz Seite

Kommen wir nun zum Herzstück, der Datenschutzseite. Hier habe ich mehrfach gesehen, dass die Datenschutzbestimmungen keine eigenständige Seite bekommen haben und lediglich unterhalb des Impressums eingebunden wurden. Wichtig ist aber, dass sie unter einem eigenen Menüpunkt zu finden sind und von überall aus mit einem Klick erreichbar ist.

Oftmals wird die Datenschutzerklärung wegen Unwissenheit auf der Impressums-Seite angelegt und ist somit durch den Besuchern nicht sofort zu finden. Generatoren für Impressum und Datenschutzerklärungen sehen diese Form oftmals automatisch vor, sodass dies von den Webseitenbetreibern falsch übernommen wird. Richtig ist, für die Datenschutzerklärung und das Impressum jeweils einen einzelnen Punkt anzulegen.

Quelle: e-recht24.de

Zu den Texten im Detail gibt es nicht so viel zu schreiben, dafür gibt es diverse Generatoren und gute Beiträge, wie so etwas formuliert sein muss. Ich möchte hier lediglich noch einen Generator empfehlen und dazu sagen, dass man diesen Text immer noch einmal genau lesen und hinterfragen sollte, ob dieser so richtig ist. https://datenschutz-generator.de/

Werbung