Analyse: Rechtstexte Fix 1 (Kommentare nicht veroeffentlichen, Abschalt-Wortlaut, TOM)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e33e1cf5ec
commit
e3fed71c76
8 files changed
+35
-22
No files matched your search
@@ -10,6 +10,9 @@ const TEMPLATE_URL = new URL('./templates/datenschutz-analyse.html', import.meta
|
||||
|
||||
const esc = (s) => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
||||
|
||||
// Interne Kommentare dürfen nie veröffentlicht werden.
|
||||
export const stripComments = (t) => t.replace(/<!--[\s\S]*?-->\s*?\n?/g, '');
|
||||
|
||||
export const isValidBase = (b) => typeof b === 'string' && /^https:\/\/[^\s"'<>]+\/$/.test(b);
|
||||
|
||||
export function scriptTag(analytics, baseUrl) {
|
||||
@@ -78,7 +81,7 @@ export async function injectAnalytics(dir, analytics, { baseUrl, onLine, fs = no
|
||||
if (!isValidBase(baseUrl)) throw new Error('Analyse: ungültige öffentliche Basis-URL');
|
||||
const tag = scriptTag(analytics, baseUrl);
|
||||
const p = analytics.privacy || {};
|
||||
const template = await fs.readFile(TEMPLATE_URL, 'utf8');
|
||||
const template = stripComments(await fs.readFile(TEMPLATE_URL, 'utf8'));
|
||||
const withAddr = p.address ? template.replace(/\{\{#address\}\}|\{\{\/address\}\}/g, '') : template.replace(/\{\{#address\}\}[\s\S]*?\{\{\/address\}\}/g, '');
|
||||
const page = withAddr.replace(/\{\{(company|address|email)\}\}/g, (_, k) => esc(p[k] ?? ''));
|
||||
await fs.writeFile(join(dir, PAGE), page, 'utf8');
|
||||
|
||||
@@ -5,12 +5,6 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex">
|
||||
<title>Datenschutz – Reichweitenmessung</title>
|
||||
<!-- Entwurf – vor Verwendung anwaltlich prüfen lassen. -->
|
||||
<!-- Prüfpunkt Anwalt P1: Zählung ohne Einwilligung (Seitenaufruf, Referrer-Domain, Land, Gerätegröße) – kein Zugriff auf Endgerät nach § 25 TDDDG? Das Skript liest Referrer und Fensterbreite aus; Einordnung nach DSK-Lesart ist offen. -->
|
||||
<!-- Prüfpunkt Anwalt P2: Tages-Kennung nach Einwilligung als pseudonym oder faktisch anonym einzuordnen? -->
|
||||
<!-- Prüfpunkt Anwalt P3: Rechtsgrundlage des anonymen Banner-Zählers (Anzeigen/Annehmen/Ablehnen). -->
|
||||
<!-- Prüfpunkt Anwalt P5: Speicherung der Banner-Wahl (auch der Ablehnung) im lokalen Speicher nach § 25 Abs. 2 Nr. 2 TDDDG; GPC/DNT wie Ablehnung. -->
|
||||
<!-- Prüfpunkt Anwalt P18: Betroffenenrechte bei nicht identifizierbaren Daten (Art. 11, Art. 12 Abs. 2 DSGVO) – Formulierung unter "Deine Rechte". -->
|
||||
<style>
|
||||
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6;color:#111;max-width:46rem;margin:0 auto;padding:1.5rem 1rem 4rem}
|
||||
h1{font-size:1.6rem}h2{font-size:1.15rem;margin-top:2rem}
|
||||
@@ -27,7 +21,7 @@
|
||||
<p>{{company}}<br>{{#address}}{{address}}<br>{{/address}}E-Mail: <a href="mailto:{{email}}">{{email}}</a></p>
|
||||
|
||||
<h2>Worum es geht</h2>
|
||||
<p>Wir möchten verstehen, wie diese Website genutzt wird, um sie zu verbessern: Welche Seiten werden gelesen, woher kommen die Besucher, wo bleiben sie hängen? Es gibt dabei keine Werbung, kein Profiling und keine Weitergabe an Werbenetzwerke. Wir setzen keine Cookies und binden keine Dienste von Google, Meta oder anderen Drittanbietern ein. Die Messung läuft auf Servern in Deutschland.</p>
|
||||
<p>Wir möchten verstehen, wie diese Website genutzt wird, um sie zu verbessern: Welche Seiten werden gelesen, woher kommen die Besucher, wo bleiben sie hängen? Es gibt dabei keine Werbung, kein Profiling und keine Weitergabe an Werbenetzwerke. Die Messung setzt keine Cookies und bindet keine Dienste von Google, Meta oder anderen Drittanbietern ein. Die Messung läuft auf Servern in Deutschland.</p>
|
||||
|
||||
<h2>Wenn Du nichts oder „Ablehnen“ auswählst</h2>
|
||||
<p>Dann zählen wir nur, dass eine Seite aufgerufen wurde. Dabei werden gespeichert:</p>
|
||||
@@ -35,10 +29,10 @@
|
||||
<li>der Seitenpfad (ohne Suchbegriffe oder Parameter hinter dem „?“),</li>
|
||||
<li>die Website, von der Du kommst (nur der Domainname, falls es nicht diese Website selbst ist),</li>
|
||||
<li>das Land, abgeleitet aus Deiner IP-Adresse,</li>
|
||||
<li>die Geräteklasse (Handy, Tablet oder Computer, nach Fensterbreite) und</li>
|
||||
<li>die Geräteklasse (Handy, Tablet oder Computer), abgeleitet aus dem Browser-Kennzeichen im Moment der Abfrage und aus der Fensterbreite, und</li>
|
||||
<li>anonyme Zähler dafür, ob das Banner angezeigt, angenommen oder abgelehnt wurde.</li>
|
||||
</ul>
|
||||
<p>Deine IP-Adresse wird nur für den Augenblick der Abfrage verwendet, um das Land zu bestimmen. Sie wird nicht gespeichert, ebenso wenig Dein Browser-Kennzeichen (User-Agent). Es gibt keine Kennung, mit der wir Dich wiedererkennen könnten. Dasselbe gilt, wenn Dein Browser das Signal „Global Privacy Control“ oder „Do Not Track“ sendet: Wir behandeln das wie ein „Ablehnen“ und zeigen das Banner nicht an.</p>
|
||||
<p>Deine IP-Adresse wird nur für den Augenblick der Abfrage verwendet, um das Land zu bestimmen. Sie wird nicht gespeichert, ebenso wenig Dein Browser-Kennzeichen (User-Agent). Ohne Einwilligung gibt es keine Kennung, mit der wir Dich wiedererkennen könnten. Dasselbe gilt, wenn Dein Browser das Signal „Global Privacy Control“ oder „Do Not Track“ sendet: Wir behandeln das wie ein „Ablehnen“ und zeigen das Banner nicht an.</p>
|
||||
<p>Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO. Unser berechtigtes Interesse ist, die Nutzung unserer Website in Zahlen zu kennen und das Banner korrekt zu betreiben. Auf Informationen in Deinem Endgerät greifen wir dafür nach unserer Einschätzung nicht im Sinne von § 25 TDDDG zu.</p>
|
||||
|
||||
<h2>Wenn Du „Annehmen“ wählst</h2>
|
||||
|
||||
Reference in new issue
Block a user