Skip to content

RichTextEditor: TipTap-Style nicht inline injizieren (CSP style-src 'self') #9

Description

@rrolf

Ausleihbar führt eine strikte Content-Security-Policy ein (virtUOS/ausleihbar#44, aktuell nur beobachtend; scharf geschaltet wird in virtUOS/ausleihbar#45). Die policy erlaubt style-src 'self' ohne 'unsafe-inline'.

Problem: RichTextEditor aus @basicbar/ui (TipTap 3) hängt beim Mounten selbst ein <style data-tiptap-style> in den <head>, mit den ProseMirror-Basisregeln (.ProseMirror { position: relative; white-space: pre-wrap; … }). Unter der Report-Only-CSP entsteht so auf jeder Seite mit Editor eine style-src-elem inline-Verletzung. Das ist die einzige, die in Ausleihbar noch übrig ist. Sobald die CSP scharf ist, würde der Browser das Stylesheet blockieren, und der Editor verlöre seine Grundstyles (z. B. Umbruchverhalten).

Vorschlag

  • In useEditor(...) die Option injectCSS: false setzen.
  • Die bisher injizierten Basisregeln als Datei ausliefern, z. B. in base.css (das Ausleihbar schon per @import "@basicbar/ui/base.css" einbindet) oder als eigenes @basicbar/ui/rich-text.css. Quelle ist TipTaps style.ts.
  • Im README festhalten, dass @basicbar/ui keine Inline-Styles oder -Skripte injiziert (CSP-tauglich), und dass Konsumenten das CSS einbinden müssen, falls es nicht in base.css steckt.
  • Release als ui 0.5.1 (Fix). Danach übernimmt Ausleihbar die Version und prüft mit der Report-Only-CSP, dass keine Verletzung mehr gemeldet wird.

Fertig, wenn ein Editor ohne <style data-tiptap-style> gleich aussieht und sich gleich verhält wie vorher (Zeilenumbrüche, Platzhalter, Auswahl von Bildern), und die Report-Only-CSP in Ausleihbar keine style-src-elem-Verletzung mehr meldet.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions