Beheben Sie XSS-Angriffe mit Content Security Policy

As promised, this feature was just enabled by default: CSP Frame Ancestors enabled by default

10 „Gefällt mir“

Hallo,
ich richte gerade Google AdSense auf meiner Website ein und scheine die Einstellung „CSP-Verletzungsberichte sammeln unter /csp_reports“ zu vermissen. Ich hoste derzeit Discourse selbst in Version 2.9.0.beta6

oben, im Zitat, ein Screenshot der Einstellung, die ich vermisse


oben, meine Einstellungsseite für CSP, auf der die Einstellung „CSP-Verletzungsberichte sammeln unter /csp_reports“ fehlt.

Jede Hilfe wird geschätzt! Und bitte sagen Sie mir, ob ich die Einstellungen, die ich habe, korrekt für AdSense eingerichtet habe, ich habe es noch nie zuvor benutzt :eyes: !

3 „Gefällt mir“

Entschuldigung, meine früheren Antworten hier sind veraltet, da wir content_security_policy_collect_reports vor etwa einem Monat zu einer versteckten Einstellung gemacht haben. Sie können sie immer noch aktivieren, aber Sie müssen dies über die Rails-Konsole tun, wie in:

./launcher enter app
...
rails c
...
SiteSetting.content_security_policy_collect_reports = true

Beachten Sie, dass dies sehr gesprächig ist. Ich empfehle dringend, diesen Weg überhaupt nicht zu gehen und einfach CSP zu aktivieren und die Website mit geöffneter Browserkonsole in mehreren Browsern (Chrome, Firefox, Safari) zu durchsuchen. Auf diese Weise werden Sie die meisten Probleme finden. Und mit der von Ihnen gewählten Konfiguration erlauben Sie im Grunde fast alles, wogegen CSP schützt, sodass Sie keine Berichte benötigen sollten.

6 „Gefällt mir“

Vielleicht übersehe ich etwas, aber ich sehe diese Einstellungen nicht in der Benutzeroberfläche der Einstellungen.

  • content_security_policy
  • content_security_policy_report_only
  • content_security_policy_collect_reports (Ich sehe, dass diese jetzt ausgeblendet ist)
  • content_security_policy_script_src

Sind diese Optionen für gehostete Instanzen verfügbar? Ich habe keine Erwähnung einer solchen Einschränkung im ursprünglichen Beitrag oder in den Kommentaren gesehen.

Bearbeitung: Habe auch versucht, die Sicherheitspolitik über ein Theme festzulegen.

Scheint nicht wie im ursprünglichen Beitrag beschrieben zu funktionieren.

Ich gehe davon aus, dass der gehostete Plan, den ich verwende, dies nicht zulässt, auch nicht über ein Theme oder eine Theme-Komponente?

Oder mache ich vielleicht etwas völlig falsch.

1 „Gefällt mir“

Derzeit liefert Discourse eine CSP Level 2-Richtlinie mit den folgenden Direktiven als Standard aus:

  • base-uri schränkt die URLs für das <base>-Element ein

Gibt es eine Möglichkeit, den Standardwert für den base-uri-Header zu überschreiben?

1 „Gefällt mir“

Wo werden <base>-Elemente tatsächlich im Diskurs verwendet?

Würde das Discourse Push-Benachrichtigungen unterbrechen?

Könnte sein. Braucht vielleicht eine passendere Umgebung.

1 „Gefällt mir“

Ein Beitrag wurde in ein neues Thema aufgeteilt: Was ist die empfohlene Methode, um sichere Bilder zu verwenden?

Hallo,\nKann ich wissen, wie ich das folgende Problem umgehen kann? Ich habe das Skript, das einen neuen Function()-Ausdruck aufruft, zu content_security_policy_script_src hinzugefügt, aber meine Browserkonsole beschwert sich immer noch über den folgenden Fehler. Wo kann ich unsafe-eval ausschließen? Danke!\n\nUncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive:\n\n

1 „Gefällt mir“

Entschuldigung. Bitte ignorieren Sie meinen vorherigen Beitrag, wenn meine untenstehenden Anmerkungen korrekt sind. Ich weiß nur, dass ich durch die obigen Beiträge ‘unsafe-eval’ direkt an content_security_policy_script_src setzen kann und keine JS-Fehler mehr in der Konsole gemeldet werden.

1 „Gefällt mir“

Schauen Sie sich vielleicht die Website-Einstellung content security policy script src an?

1 „Gefällt mir“

Ja. Wie in früheren Antworten erwähnt, kann „unsafe-eval“ direkt zu content_security_policy_script_src hinzugefügt werden. Ich dachte, nur URL-Basis oder vollständige URL wären erlaubt.

1 „Gefällt mir“