Nach einem Tag Herumprobieren bin ich auf diese Antwort gestoßen.
Es scheint, als wäre das eine verschwendete Mühe gewesen, und ich muss einen anderen Weg gehen.
Wenn ich elem.innerHTML auf <script>alert(1)</script> setze, wird es unescaped: <script>alert(1)</script> (ich sehe im Composer, dass es in der Vorschau entfernt wird, wenn ich es unescaped eingebe). Ist das ein Problem, oder wird CSP es stoppen?
https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243!csp error|690x191
Beiträge, die Skript-Tags als Teil einer Erklärung enthalten, scheinen ebenfalls diese CSP-Fehler auszulösen. Ich bin jetzt wirklich verwirrt. Muss ich mir überhaupt Sorgen um gespeicherte XSS-Angriffe machen, oder blockiert CSP sie einfach? Im Composer verwende ich CKEditor, was Self-XSS verhindert. Wenn ich mir Sorgen machen muss, scheint es, als müsste ich unsichere Tags entfernen. Im Moment mache ich das so:
value = Loofah.fragment(value).scrub!(:escape).to_s
, aber es scheint überhaupt keine Wirkung zu haben, weil das Setzen von elem.innerHTML auf diesen Wert die HTML-Entitäten einfach wieder unescaped.
EDIT: Ich habe endlich die Quelle meiner Verwirrung gefunden: Die Inspektion des Elements zeigt dir nicht das echte HTML. Es wandelt HTML-Entitäten bereits um.
Wenn du im Inspector auf „Als HTML bearbeiten
