Felsök hur du skapar en beställningssida i CSP begränsat läge

I den här artikeln beskrivs förklaringar och korrigeringar för Adobe Commerce 2.4.7-problem när en beställning skapas på Admin-sidan med CSP restricted mode är Aktiverad, med "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …" i webbläsarkonsolloggen.

Berörda produkter och versioner

Adobe Commerce i molninfrastruktur, Adobe Commerce lokalt och Magento Open Source:

  • 2.4.7
  • 2.4.6-pX
  • 2.4.5-pX
  • 2.4.4-pX

Problem - administratör skapa order sidan är skadad eller inte kan läsas in

Administratören skapa order sidan är skadad eller inte kan läsas in, med "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …" i webbläsarkonsolloggen.

Steg som ska återskapas:

  1. Gå till Sales > Orders.
  2. Skapa en ny order.

Förväntade resultat:

Administratören skapa order sidan läses in helt normalt.

Faktiska resultat:

Administratören skapa order sidan är tom eller så saknas komponenter. Följande JS fel visas i webbläsarkonsolloggen: "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …"

Orsak

I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, CSP är konfigurerad i restrict-mode, som standard, för betalningssidor i butiks- och administrationsområdet, och i report-only läge för alla andra sidor.
Motsvarande CSP rubriken innehåller inte unsafe-inline nyckelord i script-src direktiv för betalningssidor. Dessutom, endast whitelisted textbundna skript tillåts.

Lösning

Användare kan se webbläsarfel på grund av att vissa skript blockeras på grund av CSP:

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

Du måste antingen:

  1. Whitelist de blockerade skripten med SecureHtmlRenderer klassen.

  2. Använd CSPNonceProvider för att tillåta att skript körs.
    Adobe Commerce och Magento Open Source 2.4.7 och senare innehåller en Content Security Policy (CSP) nonce leverantör för att underlätta generering av unika nonce strängar för varje begäran. Dessa nonce strängarna kopplas sedan till CSP header.

    Använd generateNonce function in Magento\Csp\Helper\CspNonceProvider för att få nonce sträng.

    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. Lägg till en hash till din moduls csp_whitelist.xml -fil.

Problem - Betalningsmetoden saknas eller fungerar inte

Betalningsmetoden saknas eller fungerar inte med administratören beställa skapa sida, med "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …" i webbläsarkonsolloggen.

Steg som ska återskapas:

  1. Gå till Sales > Orders.
  2. Skapa en ny order.
  3. Skapa en ny kund.
  4. Ange kundinformationen.
  5. Ange orderdetaljer (produkter, leveranssätt).
  6. Välj en betalningsmetod.

Förväntade resultat:

Du kan välja en betalningsmetod och fortsätta att göra en beställning.

Faktiska resultat:

Betalningsmetoden saknas eller fungerar inte. Följande JS fel visas i webbläsarkonsolloggen: "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …".

Orsak

I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, CSP är konfigurerad i restrict-mode, som standard, för betalningssidor i butiks- och administrationsområdet, och i report-only läge för alla andra sidor.
Motsvarande CSP rubriken innehåller inte unsafe-inline nyckelord i script-src direktiv för betalningssidor. Dessutom, endast whitelisted textbundna skript tillåts.

Lösning

Användare kan se webbläsarfel på grund av att vissa skript blockeras på grund av CSP:

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

Du måste antingen:

  1. Whitelist de blockerade skripten med SecureHtmlRenderer klassen.

  2. Använd CSPNonceProvider för att tillåta att skript körs.
    Adobe Commerce och Magento Open Source 2.4.7 och senare innehåller en Content Security Policy (CSP) nonce leverantör för att underlätta generering av unika nonce strängar för varje begäran. Dessa nonce strängarna kopplas sedan till CSP header.

    Använd generateNonce function in Magento\Csp\Helper\CspNonceProvider för att få nonce sträng.

    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. lägg till en hash till din moduls csp_whitelist.xml -fil.

Problem - Administratören kan inte göra en beställning

En administratör kan inte skicka in en beställning från administratören skapa ordersida, med "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …" i webbläsarkonsolloggen.

Steg som ska återskapas:

  1. Gå till Sales > Orders.
  2. Skapa en ny order.
  3. Skapa en ny kund.
  4. Ange kundinformationen.
  5. Ange orderdetaljer (produkter, leveranssätt).
  6. Välj en betalningsmetod.
  7. Skicka ordern.

Förväntade resultat:

Du kan skicka en beställning.

Faktiska resultat:

Du kan inte skicka in en beställning. Följande JS fel visas i webbläsarkonsolloggen: "Avvisad körning av textbundet skript eftersom det bryter mot följande direktiv om säkerhetsprincip för innehåll: "script-src …"

Orsak

I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, CSP är konfigurerad i restrict-mode, som standard, för betalningssidor i butiks- och administrationsområdet, och i report-only läge för alla andra sidor.
Motsvarande CSP rubriken innehåller inte unsafe-inline nyckelord i script-src direktiv för betalningssidor. Dessutom, endast whitelisted textbundna skript tillåts.

Lösning

Användare kan se webbläsarfel på grund av att vissa skript blockeras på grund av CSP:

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

Du måste antingen:

  1. Whitelist de blockerade skripten med SecureHtmlRenderer klassen.

  2. Använd CSPNonceProvider för att tillåta att skript körs.
    Adobe Commerce och Magento Open Source 2.4.7 och senare innehåller en Content Security Policy (CSP) nonce leverantör för att underlätta generering av unika nonce strängar för varje begäran. Dessa nonce strängarna kopplas sedan till CSP header.

    Använd generateNonce function in Magento\Csp\Helper\CspNonceProvider för att få nonce sträng.

    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. Lägg till en hash till din moduls csp_whitelist.xml -fil.

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