Ich arbeite an einer Site und möchte, dass ein Benutzer ein benutzerdefiniertes CSS eingeben kann, das öffentlich angezeigt wird.
Da jedoch eine ganze Reihe von XSS-Angriffen über CSS durchgeführt werden können, möchte ich in der Lage sein, eine Möglichkeit zu finden, die CSS-Ausgabe zu "säubern", ähnlich wie HTML Purifier funktioniert, indem es das CSS analysiert, das geparste CSS gegen eine Whitelist ausführt und dann ein neues Stylesheet basierend auf dem geparsten und auf der weißen Liste befindlichen CSS ausgibt.
Gibt es da draußen schon eine solche Bibliothek? Wenn nicht, gibt es eine CSS-Parsing-Bibliothek, die zum Erstellen einer benutzerdefinierten Implementierung verwendet werden kann?
Ich schätze, dass Sie Ihren eigenen CSS-Parser und Filter schreiben werden, also würde ich Folgendes in Betracht ziehen, obwohl ich noch nie so etwas getan habe:
color
, font-family
. background
nicht zuzulassen, zumindest am Anfang, damit Sie die Werte leicht analysieren können. Erfordert, dass sie explizit background-color
, background-image
. Beim Parsen wäre der schwierigste Teil das Parsen von komplexen CSS-Selektoren . Aber Sie können auch hier Ihre eigene Teilmenge erzwingen.
Hier ist ein (Pseudo-) Code, vielleicht hilft es Ihnen irgendwie:
%Vor%Tags und Links css php validation user-input