In der heutigen digitalen Welt sind Sicherheitsmaßnahmen wie Content Security Policy (CSP) unerlässlich, um die Integrität und Sicherheit von Webseiten zu gewährleisten. Ein Composer-Update auf beispielsweise Magento 2.4.6-p6 kann jedoch dazu führen, dass Inline-Skripte nicht mehr geladen werden, was insbesondere im Checkout-Prozess eines Onlineshops problematisch sein kann. In diesem Beitrag wird erklärt, wie dieses Problem gelöst werden kann, warum diese Änderungen notwendig sind, und welcher Sicherheitsaspekt dabei berücksichtigt wird.

 

Was ist CSP und warum ist es wichtig?

CSP steht für Content Security Policy und ist ein Sicherheitsstandard, der hilft, bestimmte Arten von Angriffen wie Cross-Site Scripting (XSS) zu verhindern. CSP erlaubt es Webseiten-Betreibern, zu kontrollieren, welche Ressourcen wie Skripte, Stylesheets und Bilder auf einer Webseite geladen werden dürfen. Dadurch wird das Risiko minimiert, dass schädlicher Code ausgeführt wird.

 

Das Problem nach einem Composer-Update

Nach einem Composer-Update auf Magento 2.4.6-p6 kann es vorkommen, dass Inline-Skripte plötzlich nicht mehr ausgeführt werden. Dies liegt daran, dass die CSP-Whitelist Inline-Skripte standardmäßig blockiert. Dies kann besonders problematisch sein, wenn wichtige Skripte im Checkout-Prozess eines Onlineshops blockiert werden.

 

Konsolenfehlermeldung bei CSP-Problemen

Wenn Inline-Skripte aufgrund von CSP-Einstellungen blockiert werden, wird dies oft durch eine detaillierte Fehlermeldung in der Browserkonsole angezeigt. Eine typische Fehlermeldung könnte wie folgt aussehen.

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' https://example.com 'unsafe-hashes'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.

 

Erläuterung der Fehlermeldung:

 

  • Refused to execute inline script: Das Inline-Skript wurde blockiert und nicht ausgeführt.
  • because it violates the following Content Security Policy directive: Der Grund ist die Verletzung einer Content Security Policy (CSP)-Richtlinie.
  • script-src 'self' https://example.com 'unsafe-hashes': Die CSP-Richtlinie erlaubt Skripte nur von der eigenen Domain ('self'), von https://example.com und von Skripten, die spezifische Hashes verwenden ('unsafe-hashes').
  • Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.: Um die Ausführung von Inline-Skripten zu ermöglichen, muss entweder das 'unsafe-inline'-Schlüsselwort, ein spezifischer Hash-Wert ('sha256-...') oder ein Nonce-Wert ('nonce-...') angegeben werden.

 

Lösung: Hinzufügen von SHA-Hashes zur CSP-Whitelist

Um dieses Problem zu beheben, müssen die Hash-Werte (SHA) der betroffenen Inline-Skripte zur CSP-Whitelist hinzugefügt werden. Diese Hash-Werte sind eindeutige Zeichenketten, die den Inhalt des Skripts repräsentieren.

 

Schritt-für-Schritt-Anleitung

 

1. Ermittlung der SHA-Hashes der Inline-Skripte:

Die SHA-256-Hashes der Inline-Skripte müssen ermittelt werden, die blockiert werden. Dies kann mit verschiedenen Tools oder online verfügbaren Hash-Generatoren durchgeführt werden. Das Skript wird durch den Hash-Generator geführt, um den entsprechenden SHA-256-Hash zu erhalten. Werden diese SHA-Hashes nicht geladen, können die entsprechenden Werte auch aus der Browserkonsole entnommen werden.

 

2. Bearbeiten der CSP-Whitelist-Datei:

Die CSP-Whitelist-Datei des Projekts öffnen. Diese Datei enthält die Regeln, welche Ressourcen geladen werden dürfen. Die Datei könnte z.B. csp_whitelist.xml heißen, abhängig von der Konfiguration des Systems.

 

3. Beispiel:

Angenommen, ein Inline-Skript hat folgenden Inhalt:

console.log("Checkout gestartet");

 

Der SHA-256-Hash dieses Skripts könnte beispielsweise so aussehen:

sha256-XaZvjMjb4e+J9Fj5Gh7gudv5x09A==

 

Die CSP-Whitelist-Datei würde dann wie folgt angepasst werden:


value id="inlinescripts" type="host">
  'sha256-XaZvjMjb4e+J9Fj5Gh7gudv5x09A=='
</value>

 

4. Deployment der Änderungen:

Nachdem die CSP-Whitelist-Datei angepasst wurde, sicherstellen, dass diese Änderungen auf den Webserver deployed werden. Ggf. den Cache leeren, damit die Änderungen wirksam werden.

 

Warum muss das nun anders gemacht werden?

Nach dem Composer-Update wurden möglicherweise die Sicherheitsstandards der Magento 2 Anwendung erhöht. Inline-Skripte sind besonders anfällig für XSS-Angriffe, da sie von Angreifern leicht manipuliert werden können. Durch die Verwendung von SHA-256-Hashes wird sichergestellt, dass nur die erlaubten Inline-Skripte ausgeführt werden. Dies erhöht die Sicherheit der Anwendung erheblich.

 

Sicherheitsaspekt

Die Verwendung der SHA-256-Hashes bietet eine zusätzliche Sicherheitsebene, da ein Angreifer nicht einfach beliebigen JavaScript-Code in die Seite einfügen kann. Selbst wenn ein Angreifer es schafft, ein Inline-Skript in die Seite einzuschleusen, wird es nicht ausgeführt, wenn der SHA-256-Hash nicht übereinstimmt.

 

Fazit

Das Hinzufügen von SHA-256-Hashes zur CSP-Whitelist ist eine effektive Methode, um Sicherheitsprobleme nach einem Composer-Update auf Magento 2.4.6-p6 zu lösen. Es stellt sicher, dass nur genehmigte Skripte ausgeführt werden, was die Sicherheit der Anwendung erhöht. Durch die oben beschriebenen Schritte kann dieses Problem leicht behoben und der Onlineshop sicherer gemacht werden.

Unsere Agentur legt großen Wert darauf, eine sichere und störungsfreie Webseite oder Onlineshop zu gewährleisten. Mit den richtigen Maßnahmen sorgen wir für den Schutz jeder Anwendung und lösen Sicherheitsprobleme effektiv. Sicherheit sollte immer eine hohe Priorität haben, um einen reibungslosen Betrieb der Website sicherzustellen.

👉 Kontaktieren Sie uns – wir beraten Sie gern.