Zum Inhalt

Warum setzen wir auf Nonces statt auf Subresource Integrity (SRI) für CCM19?

In der Content-Security-Policy (CSP) wird häufig Subresource Integrity (SRI) eingesetzt, um sicherzustellen, dass nur überprüfte Scripte auf einer Webseite ausgeführt werden. Dies geschieht durch einen Hash-Wert, der den exakten Inhalt eines Scripts definiert. Verändert sich das Script, ohne dass der Hash in der CSP entsprechend aktualisiert wird, blockiert der Browser die Ausführung.

Für CCM19 ist die SRI jedoch nicht praktikabel, da sich der Inhalt dieser Datei durch verschiedene Faktoren regelmäßig ändern kann:

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

Nonces als Sicherheitsmechanismus verwenden

Anstelle von SRI wird die Verwendung von Nonces (Number used once) unterstützt. Dadurch kann unsafe-inline in der CSP vermieden werden, ohne dass für jede Änderung des Skriptes ein neuer Hash hinterlegt werden muss.

Die Implementierung erfolgt durch eine dynamisch generierte Nonce, die pro Seitenaufruf vom Webserver erstellt und sowohl in der CSP als auch im Script-Tag eingebunden wird:

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

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

Was bewirken Nonces?

Nonces sind eine Sicherheitsstufe unterhalb von SRI. Sie verhindern, dass Scripte ausgeführt werden, die die Nonce nicht kennen und nicht erraten können. Damit lassen sich z. B. eingeschmuggelte Scripte blockieren, die über eine Schwachstelle wie eine unsichere Kommentarfunktion in die Website eingefügt wurden.

Gleichzeitig kann ein Script, das die Nonce kennt – wie bei korrekter Einrichtung von CCM19 –, diese verwenden, um dem Browser zu zeigen, dass es berechtigt ist, weitere Scripte nachzuladen. Dadurch bleibt die Funktionalität erhalten, während unerwünschte Inline-Scripte blockiert werden.

Vorteile der Nonce-Lösung:

  • Verhindert, dass nicht autorisierte Inline-Scripte ausgeführt werden (z. B. durch XSS-Angriffe).
  • Erlaubt eine sichere Einbindung von CCM19 ohne unsafe-inline.
  • Kein manuelles Anpassen eines Hash-Werts erforderlich, da sich die Nonce pro Seitenaufruf ändert.

Fazit:\ SRI ist für CCM19 nicht umsetzbar, da sich das eingebundene Skript durch Konfigurationsänderungen und Updates regelmäßig verändert. Die Nutzung von Nonces stellt eine praktikable Alternative dar, um die Sicherheit der CSP zu gewährleisten und gleichzeitig die volle Funktionsfähigkeit von CCM19 sicherzustellen.