Solução de problemas de criação de página de pedido no CSP modo restrito
Este artigo fornece explicações e correções para problemas do Adobe Commerce 2.4.7 ao criar um pedido no lado do administrador com CSP restricted mode é Ativado, com o "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"mensagem de erro no log do console do navegador.
Produtos e versões afetados
Adobe Commerce na infraestrutura em nuvem, Adobe Commerce no local e Magento Open Source:
- 2.4.7
- 2,4,6-pX
- 2,4,5-pX
- 2,4,4-pX
Problema - Administrador criar pedido a página está quebrada ou não consegue carregar
O administrador criar pedido A página está quebrada ou não consegue carregar, com o "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"mensagem de erro no log do console do navegador.
Etapas a serem reproduzidas:
- Ir para Sales > Orders.
- Criar um novo pedido.
Resultados esperados:
O administrador criar pedido A página é carregada normalmente.
Resultados reais:
O administrador criar pedido A página está em branco ou tem componentes ausentes. As seguintes JS o erro é exibido no log do console do navegador: "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"
Causa
No Adobe Commerce e Magento Open Source versões 2.4.7 e posteriores, CSP está configurado em restrict-mode
, por padrão, para páginas de pagamento nas áreas de vitrine e administração e no report-only
para todas as outras páginas.
Os correspondentes CSP o cabeçalho não contém a variável unsafe-inline
palavra-chave dentro do script-src
diretiva para páginas de pagamento. Além disso, somente whitelisted scripts integrados são permitidos.
Solução
Os usuários podem ver erros de navegador devido ao bloqueio de determinados scripts devido a CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Para corrigir esse problema, você deve:
-
Whitelist os scripts bloqueados usando o
SecureHtmlRenderer
classe. -
Use o
CSPNonceProvider
para permitir que scripts sejam executados.
O Adobe Commerce e o Magento Open Source 2.4.7 e versões posteriores incluem uma Content Security Policy (CSP) nonce para facilitar a geração de dados únicos nonce strings para cada solicitação. Esses nonce as cadeias de caracteres são anexadas ao CSP cabeçalho.Use o
generateNonce
função emMagento\Csp\Helper\CspNonceProvider
para obter uma nonce string.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(); } }
-
Adicionar um hash ao do seu módulo
csp_whitelist.xml
arquivo.
Problema - O método de pagamento está ausente ou não está funcionando
O método de pagamento está ausente ou não está funcionando no Administrador página de criação do pedido, com o "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"mensagem de erro no log do console do navegador.
Etapas a serem reproduzidas:
- Ir para Sales > Orders.
- Criar um novo pedido.
- Crie um novo cliente.
- Informe os detalhes do cliente.
- Informe os detalhes do pedido (produtos, método de entrega).
- Selecione um método de pagamento.
Resultados esperados:
Você pode selecionar um método de pagamento e prosseguir para colocar um pedido com sucesso.
Resultados reais:
O método de pagamento está ausente ou não está funcionando. As seguintes JS o erro é exibido no log do console do navegador: "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …".
Causa
No Adobe Commerce e Magento Open Source versões 2.4.7 e posteriores, CSP está configurado em restrict-mode
, por padrão, para páginas de pagamento nas áreas de vitrine e administração e no report-only
para todas as outras páginas.
Os correspondentes CSP o cabeçalho não contém a variável unsafe-inline
palavra-chave dentro do script-src
diretiva para páginas de pagamento. Além disso, somente whitelisted scripts integrados são permitidos.
Solução
Os usuários podem ver erros de navegador devido ao bloqueio de determinados scripts devido a CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Para corrigir esse problema, você deve:
-
Whitelist os scripts bloqueados usando o
SecureHtmlRenderer
classe. -
Use o
CSPNonceProvider
para permitir que scripts sejam executados.
O Adobe Commerce e o Magento Open Source 2.4.7 e versões posteriores incluem uma Content Security Policy (CSP) nonce para facilitar a geração de dados únicos nonce strings para cada solicitação. Esses nonce as cadeias de caracteres são anexadas ao CSP cabeçalho.Use o
generateNonce
função emMagento\Csp\Helper\CspNonceProvider
para obter uma nonce string.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(); } }
-
adicionar um hash ao do seu módulo
csp_whitelist.xml
arquivo.
Problema - O administrador não pode fazer um pedido
Um administrador não pode enviar um pedido para o Administrador criar página de pedido, com o "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"mensagem de erro no log do console do navegador.
Etapas a serem reproduzidas:
- Ir para Sales > Orders.
- Criar um novo pedido.
- Crie um novo cliente.
- Informe os detalhes do cliente.
- Informe os detalhes do pedido (produtos, método de entrega).
- Selecione um método de pagamento.
- Enviar o pedido.
Resultados esperados:
Você pode enviar um pedido com sucesso.
Resultados reais:
Você não pode enviar um pedido. As seguintes JS o erro é exibido no log do console do navegador: "Recusou-se a executar o script integrado porque ele viola a seguinte diretiva de política de segurança de conteúdo: "script-src …"
Causa
No Adobe Commerce e Magento Open Source versões 2.4.7 e posteriores, CSP está configurado em restrict-mode
, por padrão, para páginas de pagamento nas áreas de vitrine e administração e no report-only
para todas as outras páginas.
Os correspondentes CSP o cabeçalho não contém a variável unsafe-inline
palavra-chave dentro do script-src
diretiva para páginas de pagamento. Além disso, somente whitelisted scripts integrados são permitidos.
Solução
Os usuários podem ver erros de navegador devido ao bloqueio de determinados scripts devido a CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Para corrigir esse problema, você deve:
-
Whitelist os scripts bloqueados usando o
SecureHtmlRenderer
classe. -
Use o
CSPNonceProvider
para permitir que scripts sejam executados.
O Adobe Commerce e o Magento Open Source 2.4.7 e versões posteriores incluem uma Content Security Policy (CSP) nonce para facilitar a geração de dados únicos nonce strings para cada solicitação. Esses nonce as cadeias de caracteres são anexadas ao CSP cabeçalho.Use o
generateNonce
função emMagento\Csp\Helper\CspNonceProvider
para obter uma nonce string.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(); } }
-
Adicionar um hash ao do seu módulo
csp_whitelist.xml
arquivo.