Fehlerbehebung bei der Erstellung einer Auftragsseite im eingeschränkten CSP

In diesem Artikel finden Sie Erläuterungen und Fehlerbehebungen für Adobe Commerce 2.4.7-Probleme beim Erstellen einer Bestellung auf der Admin-Seite mit CSP restricted mode ist Aktiviert mit der Fehlermeldung "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Anweisung verstößt: „script-src …" im Protokoll der Browser-Konsole.

Betroffene Produkte und Versionen

Adobe Commerce auf Cloud-Infrastruktur, Adobe Commerce On-Premise und Magento Open Source:

  • 2,4,7
  • 2.4.6-pX
  • 2,4,5-pX
  • 2.4.4-pX

Problem - Admin Bestellung erstellen Seite ist fehlerhaft oder kann nicht geladen werden

Die Admin Seite „Bestellung erstellen ist fehlerhaft oder kann nicht geladen werden, mit der Fehlermeldung "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Anweisung verstößt: „script-src …" im Protokoll der Browser-Konsole.

Schritte zur Reproduktion:

  1. Navigieren Sie zu Sales > Orders.
  2. Erstellen Sie eine neue Bestellung.

Erwartete Ergebnisse:

Die Admin Seite „Bestellung erstellen wird vollständig normal geladen.

Tatsächliche Ergebnisse:

Die Admin Seite „Auftrag erstellen ist leer oder es fehlen Komponenten. Der folgende JS wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …"

Ursache

In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline Schlüsselwort in der script-src-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.

Lösung

Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src

Um dieses Problem zu beheben, müssen Sie entweder:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

  2. Verwenden Sie die CSPNonceProvider-Klasse, um die Ausführung von Skripten zu ermöglichen.
    Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.

    Verwenden Sie die generateNonce Funktion in Magento\Csp\Helper\CspNonceProvider, um eine nonce Zeichenfolge abzurufen.

    code language-php
    use Magento\Csp\Helper\CspNonceProvider;
    
    class MyClass
    {
    
        /**
         * @var CspNonceProvider
         */
        private $cspNonceProvider;
    
        /**
         * @param CspNonceProvider $cspNonceProvider
         */
        public function __construct(CspNonceProvider $cspNonceProvider)
        {
            $this->cspNonceProvider = $cspNonceProvider
        }
    
        /**
         * Get CSP Nonce
         *
         * @return String
         */
        public function getNonce(): string
        {
            return $this->cspNonceProvider->generateNonce();
        }
    }
    
  3. Fügen Sie hash zur csp_whitelist.xml-Datei Ihres Moduls hinzu.

Problem - Zahlungsmethode fehlt oder funktioniert nicht

Die Zahlungsmethode fehlt oder funktioniert nicht auf der Admin-Seite Bestellerstellung mit der Fehlermeldung "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Direktive verstößt: „script-src …" im Protokoll der Browser-Konsole.

Schritte zur Reproduktion:

  1. Navigieren Sie zu Sales > Orders.
  2. Erstellen Sie eine neue Bestellung.
  3. Neuen Kunden erstellen.
  4. Geben Sie die Kundendetails ein.
  5. Geben Sie die Bestelldetails (Produkte, Versandart) ein.
  6. Wählen Sie eine Zahlungsmethode aus.

Erwartete Ergebnisse:

Sie können eine Zahlungsmethode auswählen und mit der erfolgreichen Bestellung fortfahren.

Tatsächliche Ergebnisse:

Die Zahlungsmethode fehlt oder funktioniert nicht. Der folgende JS wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …".

Ursache

In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline Schlüsselwort in der script-src-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.

Lösung

Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src

Um dieses Problem zu beheben, müssen Sie entweder:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

  2. Verwenden Sie die CSPNonceProvider-Klasse, um die Ausführung von Skripten zu ermöglichen.
    Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.

    Verwenden Sie die generateNonce Funktion in Magento\Csp\Helper\CspNonceProvider, um eine nonce Zeichenfolge abzurufen.

    code language-php
    use Magento\Csp\Helper\CspNonceProvider;
    
    class MyClass
    {
    
        /**
         * @var CspNonceProvider
         */
        private $cspNonceProvider;
    
        /**
         * @param CspNonceProvider $cspNonceProvider
         */
        public function __construct(CspNonceProvider $cspNonceProvider)
        {
            $this->cspNonceProvider = $cspNonceProvider
        }
    
        /**
         * Get CSP Nonce
         *
         * @return String
         */
        public function getNonce(): string
        {
            return $this->cspNonceProvider->generateNonce();
        }
    }
    
  3. Fügen Sie hash zur csp_whitelist.xml-Datei Ihres Moduls hinzu.

Problem - Der Administrator kann keine Bestellung aufgeben

Ein Administrator kann keine Bestellung auf der Admin-Seite Bestellung erstellen mit der Fehlermeldung "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Direktive verstößt: „script-src …" im Protokoll der Browser-Konsole.

Schritte zur Reproduktion:

  1. Navigieren Sie zu Sales > Orders.
  2. Erstellen Sie eine neue Bestellung.
  3. Neuen Kunden erstellen.
  4. Geben Sie die Kundendetails ein.
  5. Geben Sie die Bestelldetails (Produkte, Versandart) ein.
  6. Wählen Sie eine Zahlungsmethode aus.
  7. Senden Sie die Bestellung.

Erwartete Ergebnisse:

Sie können eine Bestellung erfolgreich senden.

Tatsächliche Ergebnisse:

Sie können keine Bestellung abschicken. Der folgende JS wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …"

Ursache

In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline Schlüsselwort in der script-src-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.

Lösung

Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src

Um dieses Problem zu beheben, müssen Sie entweder:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

  2. Verwenden Sie die CSPNonceProvider-Klasse, um die Ausführung von Skripten zu ermöglichen.
    Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.

    Verwenden Sie die generateNonce Funktion in Magento\Csp\Helper\CspNonceProvider, um eine nonce Zeichenfolge abzurufen.

    code language-php
    use Magento\Csp\Helper\CspNonceProvider;
    
    class MyClass
    {
    
        /**
         * @var CspNonceProvider
         */
        private $cspNonceProvider;
    
        /**
         * @param CspNonceProvider $cspNonceProvider
         */
        public function __construct(CspNonceProvider $cspNonceProvider)
        {
            $this->cspNonceProvider = $cspNonceProvider
        }
    
        /**
         * Get CSP Nonce
         *
         * @return String
         */
        public function getNonce(): string
        {
            return $this->cspNonceProvider->generateNonce();
        }
    }
    
  3. Fügen Sie hash zur csp_whitelist.xml-Datei Ihres Moduls hinzu.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a