Warum verwendet CCM19 Nonces anstelle von Subresource Integrity (SRI)

Was ist Subresource Integrity (SRI) und warum ist es für CCM19 nicht geeignet?


Subresource Integrity (SRI) ist eine Sicherheitsfunktion, die sicherstellt, dass nur überprüfte Skripte auf einer Webseite ausgeführt werden. Dies geschieht durch einen Hash-Wert, der den exakten Inhalt eines Skripts definiert. Verändert sich das Skript, ohne dass der Hash in der Content-Security-Policy (CSP) entsprechend aktualisiert wird, blockiert der Browser die Ausführung.
Für CCM19 ist SRI jedoch nicht praktikabel, da sich der Inhalt der eingebundenen Skripte regelmäßig ändern kann, beispielsweise durch:

  • Anpassungen in der Banner-Konfiguration
  • Updates von CCM19
  • Dynamische Inhalte abhängig von den gewählten Einstellungen

Diese häufigen Änderungen würden erfordern, dass der Hash-Wert in der CSP ständig aktualisiert wird, was in der Praxis kaum umsetzbar ist.

Was sind Nonces und wie funktionieren sie?


Nonces (Number used once) sind einmalige, zufällig generierte Werte, die pro Seitenaufruf erstellt werden. Sie werden sowohl in der CSP als auch im entsprechenden <script>-Tag eingebunden:

<script nonce="xyz..." src="https://cloud.ccm19.de/app.js?..."></script>

CCM19 übernimmt diese Nonce und nutzt sie für alle nachgeladenen Skripte und Styles, sodass eine sichere Ausführung gewährleistet ist.

Welche Vorteile bietet die Verwendung von Nonces?

  • Vermeidung von unsafe-inline: Durch die Verwendung von Nonces kann auf die unsichere Direktive unsafe-inline in der CSP verzichtet werden.
  • Flexibilität bei Skriptänderungen: Da die Nonce bei jedem Seitenaufruf neu generiert wird, müssen keine Hash-Werte bei Änderungen der Skripte aktualisiert werden.
  • Schutz vor XSS-Angriffen: Nur Skripte mit der korrekten Nonce dürfen ausgeführt werden, wodurch das Einschleusen und Ausführen von nicht autorisierten Inline-Skripten verhindert wird.
  • Kompatibilität mit dynamischen Inhalten: Die Verwendung von Nonces ermöglicht es CCM19, dynamische Inhalte sicher zu laden, ohne die Integrität der CSP zu gefährden.

Zurück zur Übersicht