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 %}-Variablen

  • Richtext-Werte: Sie werden beim Einfügen im Editor und beim Speichern serverseitig gegen eine Allowlist bereinigt (erlaubte Tags, Links nur http(s), mailto, tel oder relativ).

Niemals | raw auf 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 textContent oder Attribut-Setter einsetzen, nie per innerHTML.

  • JSON im <script> immer mit | json ausgeben.

  • Keine eigenen Klick-Handler mit preventDefault() auf data-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“.

Noch Fragen?

Unser Support antwortet in der Regel innerhalb eines Werktags.

Support kontaktieren