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:
Binary file not shown.
@@ -114,6 +114,9 @@ msgstr "Withdraw consent for external content"
|
||||
msgid "Betrifft nur die Freigabe externer Einbettungen (z. B. Karten, Videos). Cookie-Einstellungen werden separat verwaltet."
|
||||
msgstr "Affects only the release of external embeds (e.g. maps, videos). Cookie settings are managed separately."
|
||||
|
||||
msgid "Externe Inhalte aktivieren"
|
||||
msgstr "Enable external content"
|
||||
|
||||
msgid "Übermittlung in ein Drittland außerhalb der EU/des EWR"
|
||||
msgstr "Transfer to a third country outside the EU/EEA"
|
||||
|
||||
@@ -282,8 +285,11 @@ msgstr "Custom placeholder text (empty = default)"
|
||||
msgid "Datenübermittlung in Drittland (außerhalb EU/EWR)"
|
||||
msgstr "Data transfer to a third country (outside EU/EEA)"
|
||||
|
||||
msgid "Lädt externe Skripte"
|
||||
msgstr "Loads external scripts"
|
||||
msgid "Blockiert zusätzlich passende <script>-Einbindungen (auch per JavaScript nachgeladene, z. B. die YouTube-/Vimeo-API) bis zur Einwilligung."
|
||||
msgstr "Additionally blocks matching <script> includes (including ones injected via JavaScript, e.g. the YouTube/Vimeo API) until consent."
|
||||
|
||||
msgid "Zugehörige Skripte blockieren (z. B. YouTube-/Vimeo-API)"
|
||||
msgstr "Also block related scripts (e.g. YouTube/Vimeo API)"
|
||||
|
||||
msgid "Textfarbe Platzhalter"
|
||||
msgstr "Placeholder text color"
|
||||
@@ -330,6 +336,12 @@ msgstr "Services overview (privacy policy)"
|
||||
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)."
|
||||
msgstr "Lists all configured services with recipient, third-country note, purpose and privacy link. Ideal for inclusion in your privacy policy (Art. 13 GDPR)."
|
||||
|
||||
msgid "Einwilligungs-Button (für reine Skript-Dienste)"
|
||||
msgstr "Consent button (for script-only services)"
|
||||
|
||||
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\"."
|
||||
msgstr "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\"."
|
||||
|
||||
msgid "Version %s"
|
||||
msgstr "Version %s"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user