html - script - iframe src content security policy



Qual é o objetivo do atributo "nonce" de HTML para elementos de script e estilo? (1)

O nonce atributo permite que você "whitelist" certos elementos de style e script in-line, evitando o uso da diretiva unsafe-inline CSP (que permitiria todo o script / style in-line), para que você ainda mantenha o recurso CSP principal de desautorizar o script inline / style em geral.

Portanto, o atributo nonce é uma maneira de dizer aos navegadores que o conteúdo in-line de um determinado script ou elemento de estilo não foi injetado no documento por algum terceiro (mal-intencionado), mas colocado intencionalmente no documento por quem controla o servidor. servido de.

https://developers.google.com/web/fundamentals/security/csp/#if_you_absolutely_must_use_it é um bom exemplo de como usar o atributo nonce , que segue os seguintes passos:

  1. Para cada solicitação que seu servidor Web recebe para um documento em particular, faça com que seu backend gere uma string aleatória codificada em base64 de pelo menos 128 bits de dados de um gerador de números aleatórios criptograficamente seguro; por exemplo, EDNnf03nceIOfn39fn3e9h3sdfa . Esse é o seu nonce.

  2. Tome o nonce gerado na etapa 1 e, para qualquer script / style in-line que você queira “whitelist”, faça com que seu código de back-end insira um atributo nonce no documento antes de ser enviado pela rede, com o nonce como o valor:

    <script nonce="EDNnf03nceIOfn39fn3e9h3sdfa"></script>
  3. Tome o nonce gerado no passo 1, nonce- to, e faça o seu backend gerar um cabeçalho CSP com aquele entre os valores da lista de fontes para script-src ou style-src :

    Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'

Portanto, o mecanismo de uso de um nonce é uma alternativa ao invés de gerar um hash do conteúdo do script ou style in-line que você deseja permitir e, em seguida, especificar esse hash na lista de fontes apropriadas em seu cabeçalho CSP.

Observe que, como os navegadores não (não) podem verificar se o valor nonce enviado muda entre as solicitações de página, é possível - embora totalmente desaconselhável - pular 1 acima e não fazer com que o back-end faça nada dinamicamente para o nonce. poderia apenas colocar um atributo nonce com um valor estático na origem HTML do seu documento e enviar um cabeçalho CSP estático com o mesmo valor nonce.

Mas a razão pela qual você não gostaria de usar um nonce estático dessa maneira é que, para começar, ele praticamente acabaria com todo o propósito de usar o nonce - porque, se você usasse um nicho estático como esse, Nesse ponto, você pode estar usando unsafe-inline .

O W3C diz que há um novo atributo no HTML5.1 chamado nonce para style e script que pode ser usado pela política de segurança de conteúdo de um site.

Eu pesquisei sobre isso, mas finalmente não entendi o que esse atributo realmente faz e o que muda ao usá-lo?





nonce