Oplossen van problemen bij het maken van een ordepagina in de beperkte modus van CSP

Dit artikel verstrekt verklaringen en moeilijke situaties voor Adobe Commerce 2.4.7 kwesties terwijl het creëren van een orde op Admin met CSP restricted mode wordt Toegelaten, met "Weigerd 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.

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

De kwestie - Admin creeert orde pagina is gebroken of kan niet laden

Admin creeert orde pagina is gebroken of kan niet laden, met "dat 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 Sales > Orders .
  2. Maak een nieuwe volgorde.

Verwachte resultaten :

Admin creeert orde pagina volledig laadt normaal.

Ware resultaten :

Admin creeert orde pagina is leeg of 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 Admin orde leidt tot 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 Sales > Orders .
  2. Maak een nieuwe volgorde.
  3. Maak een nieuwe klant.
  4. Voer de klantgegevens in.
  5. Voer de bestelgegevens in (producten, verzendmethode).
  6. 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 - Admin kan geen bestelling plaatsen

Admin kan geen orde op Admin voorleggen leidt tot ordepagina, 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 Sales > Orders .
  2. Maak een nieuwe volgorde.
  3. Maak een nieuwe klant.
  4. Voer de klantgegevens in.
  5. Voer de bestelgegevens in (producten, verzendmethode).
  6. Selecteer een betalingsmethode.
  7. Verzend de bestelling.

Verwachte resultaten :

U kunt een bestelling verzenden.

Ware resultaten :

U kunt geen bestelling verzenden. 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