Felsöka utcheckningssidan för butiker på CSP begränsat läge

I den här artikeln ges förklaringar och korrigeringar för problem i Adobe Commerce 2.4.7 när du visar utcheckningssidan i CSP restricted mode, 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 - Utcheckningssidan för Storefront är skadad eller kan inte läsas in

The storefront checkout 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 butiken.
  2. Lägg en produkt i kundvagnen och fortsätt till kassan.

Förväntade resultat:

Utcheckningssidan läses in helt normalt.

Faktiska resultat:

Utcheckningssidan är tom eller saknar 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 på storefront checkout 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 butiken.
  2. Lägg en produkt i kundvagnen och fortsätt till kassan.
  3. 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 - Kunden kan inte göra en beställning

En kund kan inte göra en beställning 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 butiken.
  2. Lägg en produkt i kundvagnen och fortsätt till kassan.
  3. Välj en betalningsmetod.
  4. Klicka Montera beställning.

Förväntade resultat:

Du kan göra en beställning.

Faktiska resultat:

Du kan inte göra 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