Probleem met uitchecken van storefront oplossen in de beperkte modus van CSP

Dit artikel verstrekt verklaringen en moeilijke situaties voor Adobe Commerce 2.4.7 kwesties terwijl het bekijken van de controlepagina in CSP restricted mode, met "die wordt geweigerd om inline manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"foutenmelding in het browser consolelogboek.

Betrokken producten en versies

Adobe Commerce op cloudinfrastructuur, Adobe Commerce op locatie en Magento Open Source:

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

Probleem - Afhandelingspagina voor winkelobject is verbroken of kan niet worden geladen

De storefront controle pagina is gebroken of kan niet laden, met "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.

Stappen om te reproduceren:

  1. Ga naar de winkel.
  2. Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.

Verwachte resultaten :

De uitcheckpagina wordt normaal volledig geladen.

Ware resultaten :

De uitcheckpagina is leeg of bevat ontbrekende componenten. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"

Oorzaak

In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode , voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only -modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline binnen de aanwijzing script-src voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.

Oplossing

Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :

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

om deze kwestie te bevestigen, moet u één van beide :

  1. Whitelistde geblokkeerde manuscripten die de SecureHtmlRenderer klasse gebruiken.

  2. Gebruik de klasse CSPNonceProvider om toe te staan dat scripts worden uitgevoerd.
    Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.

    Gebruik de functie generateNonce in Magento\Csp\Helper\CspNonceProvider om een tekenreeks nonce te verkrijgen.

    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. voeg a hashaan het dossier van uw module csp_whitelist.xml toe.

Uitgave - Betalingsmethode ontbreekt of werkt niet

De betalingsmethode ontbreekt of werkt niet aan de storefront controle pagina, met "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.

Stappen om te reproduceren:

  1. Ga naar de winkel.
  2. Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.
  3. Selecteer een betalingsmethode.

Verwachte resultaten :

U kunt een betalingsmethode selecteren en doorgaan met het plaatsen van een bestelling.

Ware resultaten :

De betalingsmethode ontbreekt of werkt niet. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"

Oorzaak

In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode , voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only -modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline binnen de aanwijzing script-src voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.

Oplossing

Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :

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

om deze kwestie te bevestigen, moet u één van beide :

  1. Whitelistde geblokkeerde manuscripten die de SecureHtmlRenderer klasse gebruiken.

  2. Gebruik de klasse CSPNonceProvider om toe te staan dat scripts worden uitgevoerd.
    Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.

    Gebruik de functie generateNonce in Magento\Csp\Helper\CspNonceProvider om een tekenreeks nonce te verkrijgen.

    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. voeg a hashaan het dossier van uw module csp_whitelist.xml toe.

Probleem - Klant kan geen bestelling plaatsen

Een klant kan geen orde plaatsen, met "die wordt geweigerd om inline manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.

Stappen om te reproduceren:

  1. Ga naar de winkel.
  2. Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.
  3. Selecteer een betalingsmethode.
  4. Klik de Orde van de Plaats.

Verwachte resultaten :

U kunt een bestelling plaatsen.

Ware resultaten :

U kunt geen bestelling plaatsen. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"

Oorzaak

In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode , voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only -modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline binnen de aanwijzing script-src voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.

Oplossing

Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :

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

om deze kwestie te bevestigen, moet u één van beide :

  1. Whitelistde geblokkeerde manuscripten die de SecureHtmlRenderer klasse gebruiken.

  2. Gebruik de klasse CSPNonceProvider om toe te staan dat scripts worden uitgevoerd.
    Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.

    Gebruik de functie generateNonce in Magento\Csp\Helper\CspNonceProvider om een tekenreeks nonce te verkrijgen.

    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. voeg a hashaan het dossier van uw module csp_whitelist.xml toe.

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