Sicherheit im Theme
Auto-Escaping, wann raw erlaubt ist, css_safe in Style-Blöcken und der sichere Umgang mit Daten im JavaScript.
Auto-Escaping
Alle {{ }}-Ausgaben werden automatisch HTML-escaped. In Attributen dokumentierst du die Absicht zusätzlich mit | escape.
{{ section.settings.text }} {# ✅ escaped #}
<img alt="{{ section.settings.alt | escape }}"> {# ✅ #}
{{ content_for_layout | raw }} {# ⚠️ nur Systeminhalt #}| raw nur für vertrauenswürdige Inhalte
content_for_header,content_for_layout,content_for_footer{% capture %}-VariablenRichtext-Werte: Sie werden beim Einfügen im Editor und beim Speichern serverseitig gegen eine Allowlist bereinigt (erlaubte Tags, Links nur
http(s),mailto,teloder relativ).
Niemals
| rawauf andere Settings, Formularwerte oder Menü-Labels anwenden.
CSS-Injection verhindern
{# ✅ #}
<style>:root { --font: '{{ settings.font_body | css_safe }}'; }</style>
{# ❌ </style> könnte eingeschleust werden #}
<style>:root { --font: '{{ settings.font_body }}'; }</style>JavaScript
Daten aus JSON-Islands und Datensätzen nur über
textContentoder Attribut-Setter einsetzen, nie perinnerHTML.JSON im
<script>immer mit| jsonausgeben.Keine eigenen Klick-Handler mit
preventDefault()aufdata-funnel-*-Elementen.
Tracking
Binde Tracking- und Marketing-Skripte nie fest ins Theme ein. Sie gehören ins Consent-Modul unter Website → Datenschutz → Skripte, wo sie erst nach Einwilligung ausgeführt werden. Fest eingebaute Dienste meldet der Scanner als „Blockade ohne Wirkung“.
Unser Support antwortet in der Regel innerhalb eines Werktags.