Felsök skapandesidan i CSP begränsat läge
I den här artikeln ges förklaringar och korrigeringar för Adobe Commerce 2.4.7-problem när en order skapas på admin-sidan med CSP restricted mode är Enabled med "Refused to execute inline script, because it violates the following Content Security Policy Directive: "script-src …" error message in the browser console log…".
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 - Admin skapad beställning är skadad eller kan inte läsas in
Sidan Admin create order är skadad eller kan inte läsas in, med felmeddelandet Nekas att köra infogat skript eftersom den bryter mot följande direktiv för innehållssäkerhetsprincip: "script-src …" i webbläsarkonsolloggen.
Steg som ska återskapas:
- Gå till Sales > Orders.
- Skapa en ny order.
Förväntade resultat:
Sidan Admin Skapa order läses in helt och hållet som vanligt.
Faktiska resultat:
Sidan Admin create order är tom eller så saknas komponenter. Följande JS-fel visas i webbläsarens konsollogg: Avvisad att det infogade skriptet inte kan köras eftersom det bryter mot följande direktiv för säkerhetsprincip för innehåll: "script-src …"
Orsak
I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, är CSP som standard konfigurerat i restrict-mode
för betalningssidor i butiks- och administratörsområdet och i report-only
-läge för alla andra sidor.
Motsvarande CSP-rubrik innehåller inte nyckelordet unsafe-inline
i direktivet script-src
för betalningssidor. Dessutom tillåts bara whitelisted textbundna skript.
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 för att kunna åtgärda problemet:
-
Whitelist blockerade skript med klassen
SecureHtmlRenderer
. -
Använd klassen
CSPNonceProvider
om du vill 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-provider som gör det enklare att skapa unika nonce -strängar för varje begäran. Dessa nonce strängar kopplas sedan till rubriken CSP.Använd funktionen
generateNonce
iMagento\Csp\Helper\CspNonceProvider
för att hämta en 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(); } }
-
Lägg till en hash i modulens
csp_whitelist.xml
-fil.
Problem - Betalningsmetoden saknas eller fungerar inte
Betalningsmetoden saknas eller fungerar inte på Admin order create page, med felmeddelandet Nekad att köra infogat skript eftersom det bryter mot följande direktiv för innehållets säkerhetsprincip: "script-src …" i webbläsarkonsolloggen.
Steg som ska återskapas:
- Gå till Sales > Orders.
- Skapa en ny order.
- Skapa en ny kund.
- Ange kundinformationen.
- Ange orderdetaljer (produkter, leveranssätt).
- 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äsarens konsollogg: Avvisad att det infogade skriptet inte kan köras eftersom det bryter mot följande direktiv för säkerhetsprincip för innehåll: "script-src …".
Orsak
I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, är CSP som standard konfigurerat i restrict-mode
för betalningssidor i butiks- och administratörsområdet och i report-only
-läge för alla andra sidor.
Motsvarande CSP-rubrik innehåller inte nyckelordet unsafe-inline
i direktivet script-src
för betalningssidor. Dessutom tillåts bara whitelisted textbundna skript.
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 för att kunna åtgärda problemet:
-
Whitelist blockerade skript med klassen
SecureHtmlRenderer
. -
Använd klassen
CSPNonceProvider
om du vill 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-provider som gör det enklare att skapa unika nonce -strängar för varje begäran. Dessa nonce strängar kopplas sedan till rubriken CSP.Använd funktionen
generateNonce
iMagento\Csp\Helper\CspNonceProvider
för att hämta en 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(); } }
-
lägg till en hash i modulens
csp_whitelist.xml
-fil.
Problem - Administratören kan inte göra en beställning
En administratör kan inte skicka en beställning på Admin create order page med "Refused to execute inline script eftersom den bryter mot följande direktiv för Content Security Policy: "script-src …" error message in the browser console log.
Steg som ska återskapas:
- Gå till Sales > Orders.
- Skapa en ny order.
- Skapa en ny kund.
- Ange kundinformationen.
- Ange orderdetaljer (produkter, leveranssätt).
- Välj en betalningsmetod.
- 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äsarens konsollogg: Avvisad att det infogade skriptet inte kan köras eftersom det bryter mot följande direktiv för säkerhetsprincip för innehåll: "script-src …"
Orsak
I Adobe Commerce och Magento Open Source, version 2.4.7 och senare, är CSP som standard konfigurerat i restrict-mode
för betalningssidor i butiks- och administratörsområdet och i report-only
-läge för alla andra sidor.
Motsvarande CSP-rubrik innehåller inte nyckelordet unsafe-inline
i direktivet script-src
för betalningssidor. Dessutom tillåts bara whitelisted textbundna skript.
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 för att kunna åtgärda problemet:
-
Whitelist blockerade skript med klassen
SecureHtmlRenderer
. -
Använd klassen
CSPNonceProvider
om du vill 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-provider som gör det enklare att skapa unika nonce -strängar för varje begäran. Dessa nonce strängar kopplas sedan till rubriken CSP.Använd funktionen
generateNonce
iMagento\Csp\Helper\CspNonceProvider
för att hämta en 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(); } }
-
Lägg till en hash i modulens
csp_whitelist.xml
-fil.