feat: third-party-scripts blockieren (server + client-guard)
Loest die YouTube/Vimeo-API-Luecke: viele dienste laden ueber <script> (z. B. youtube.com/iframe_api, www-widgetapi.js, analytics) statt iframes - oft per JavaScript nachgeladen, daher fuer den scanner unsichtbar. - Pro dienst aktivierbar ueber das (umbenannte) feld "Zugehoerige Skripte blockieren (z. B. YouTube-/Vimeo-API)" = das vorhandene loads_script-flag. Presets (YouTube, Vimeo, Maps) haben es bereits an. - Server-seitig: passende <script src> werden zu type="text/plain" (src -> data-cb-src) neutralisiert, laden also nicht. - Client-seitig: winziger guard ganz frueh im <head> patcht appendChild/insertBefore/replaceChild und neutralisiert dynamisch injizierte scripts VOR dem einfuegen -> kein request. Faengt damit auch die per JS nachgeladene iframe_api ab. - Einwilligung (per-dienst-consent, z. B. ueber den video-platzhalter) schaltet die scripts via cbActivateScripts frei und laedt sie nach. - Neuer shortcode [content_blocker_consent id="…"] als einwilligungs-button fuer reine skript-dienste ohne sichtbaren platzhalter. - guard-logik mit DOM-mock getestet (block + reinject), server-regex isoliert geprueft. i18n DE/EN ergaenzt (127 strings). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 123 unique strings
|
||||
# 127 unique strings
|
||||
MSGID Ungültige Antwort vom Lizenzserver.
|
||||
MSGID Keine Berechtigung.
|
||||
MSGID Bitte einen Lizenzschlüssel eingeben.
|
||||
@@ -35,6 +35,7 @@ MSGID Diesen Dienst künftig immer laden
|
||||
MSGID Um diesen Inhalt von %s zu laden, ist Ihre Einwilligung erforderlich. Dabei werden personenbezogene Daten (z. B. Ihre IP-Adresse) an den Anbieter übertragen.
|
||||
MSGID Einwilligung für externe Inhalte widerrufen
|
||||
MSGID Betrifft nur die Freigabe externer Einbettungen (z. B. Karten, Videos). Cookie-Einstellungen werden separat verwaltet.
|
||||
MSGID Externe Inhalte aktivieren
|
||||
MSGID Übermittlung in ein Drittland außerhalb der EU/des EWR
|
||||
MSGID Empfänger
|
||||
MSGID Zweck
|
||||
@@ -91,7 +92,8 @@ MSGID Datenschutz-URL des Anbieters
|
||||
MSGID Verarbeitungszweck
|
||||
MSGID Individueller Platzhaltertext (leer = Standard)
|
||||
MSGID Datenübermittlung in Drittland (außerhalb EU/EWR)
|
||||
MSGID Lädt externe Skripte
|
||||
MSGID Blockiert zusätzlich passende <script>-Einbindungen (auch per JavaScript nachgeladene, z. B. die YouTube-/Vimeo-API) bis zur Einwilligung.
|
||||
MSGID Zugehörige Skripte blockieren (z. B. YouTube-/Vimeo-API)
|
||||
MSGID Textfarbe Platzhalter
|
||||
MSGID Hintergrundfarbe Platzhalter
|
||||
MSGID Button: Hintergrundfarbe
|
||||
@@ -107,6 +109,8 @@ MSGID Inhalt manuell blockieren
|
||||
MSGID Umschließt ein iframe und ersetzt es durch den Platzhalter des angegebenen Dienstes. Die ID ist der Anbietername in Kleinbuchstaben mit Bindestrichen (z. B. „Google Maps" → google-maps).
|
||||
MSGID Dienste-Übersicht (Datenschutzerklärung)
|
||||
MSGID Listet alle konfigurierten Dienste mit Empfänger, Drittland-Hinweis, Zweck und Datenschutz-Link auf. Ideal zum Einbinden in die Datenschutzerklärung (Art. 13 DSGVO).
|
||||
MSGID Einwilligungs-Button (für reine Skript-Dienste)
|
||||
MSGID Erteilt die Einwilligung für einen Dienst und lädt die Seite neu. Gedacht für Dienste, die nur Skripte blockieren und keinen sichtbaren Platzhalter haben. Optionen: id="…" (Dienst-ID, Pflicht), text="…", style="button|link".
|
||||
MSGID Version %s
|
||||
MSGID GDPR Content Blocker lädt externe Einbindungen (z. B. Google Maps, YouTube, OpenStreetMap, Vimeo) erst nach aktiver Einwilligung der Besucher. Vor dem Klick wird keine Verbindung zum Drittanbieter aufgebaut – es werden also keine personenbezogenen Daten (z. B. die IP-Adresse) übertragen. So lassen sich externe Inhalte DSGVO-konform einbinden, ohne ein schweres Consent-Tool.
|
||||
MSGID Funktionen
|
||||
|
||||
@@ -121,5 +121,10 @@
|
||||
"Unerwartete Antwort vom Lizenzserver.": "Unexpected response from the license server.",
|
||||
"Lizenz upgraden": "Upgrade license",
|
||||
"Schalten Sie weitere Domains frei, um diese Seite zusätzlich zu aktivieren – oder geben Sie unten eine bestehende Domain frei.": "Unlock more domains to additionally activate this site — or release an existing domain below.",
|
||||
"Schriftart für DSGVO-konformen Betrieb lokal hosten.": "Host this font locally for GDPR-compliant operation."
|
||||
"Schriftart für DSGVO-konformen Betrieb lokal hosten.": "Host this font locally for GDPR-compliant operation.",
|
||||
"Zugehörige Skripte blockieren (z. B. YouTube-/Vimeo-API)": "Also block related scripts (e.g. YouTube/Vimeo API)",
|
||||
"Blockiert zusätzlich passende <script>-Einbindungen (auch per JavaScript nachgeladene, z. B. die YouTube-/Vimeo-API) bis zur Einwilligung.": "Additionally blocks matching <script> includes (including ones injected via JavaScript, e.g. the YouTube/Vimeo API) until consent.",
|
||||
"Externe Inhalte aktivieren": "Enable external content",
|
||||
"Einwilligungs-Button (für reine Skript-Dienste)": "Consent button (for script-only services)",
|
||||
"Erteilt die Einwilligung für einen Dienst und lädt die Seite neu. Gedacht für Dienste, die nur Skripte blockieren und keinen sichtbaren Platzhalter haben. Optionen: id=\"…\" (Dienst-ID, Pflicht), text=\"…\", style=\"button|link\".": "Grants consent for a service and reloads the page. Intended for services that only block scripts and have no visible placeholder. Options: id=\"…\" (service ID, required), text=\"…\", style=\"button|link\"."
|
||||
}
|
||||
Reference in New Issue
Block a user