Pular para o conteúdo

Hash de integridade de subrecurso

Subresource Integrity Hash

Calcula o atributo Subresource Integrity (sha256/384/512) de um script ou folha de estilo que você cola ou solta.

Um `<script src>` apontando para uma CDN é uma permissão permanente para essa CDN executar o código que quiser nos navegadores dos seus usuários. Um atributo Subresource Integrity a revoga: o navegador se recusa a executar um arquivo cujo hash não bate com o que você fixou.

⚡ Local, com ajuda opcional do servidorsriintegritywebhash

Solte o arquivo exato

O script ou a folha de estilos que você vai servir. O hash é feito como está.

O hash é feito com WebCrypto no seu navegador — é o mesmo resumo que o navegador vai conferir. Não há campo de URL de propósito: buscar um arquivo remoto a partir desta página para calcular o hash seria barrado pelo CORS ou viraria um vetor de SSRF, e um navegador não consegue resolver e depois fixar um host como um servidor faz. Ponha aqui o arquivo que você vai servir.

Como usar

  1. Forneça o arquivo ou a URL

    Solte o arquivo exato que você vai publicar, ou busque uma URL. O hash é sobre os bytes, então um arquivo e uma URL que diferem em uma quebra de linha dão atributos diferentes.

  2. Copie o atributo inteiro

    A saída é `integrity="sha384-…"`. Cole-a na tag junto com `crossorigin="anonymous"` — sem isso, um recurso de outra origem é opaco e a integridade não pode ser verificada.

  3. Fixe uma versão, não uma tag que se move

    Um atributo integrity contra uma URL `@latest` quebra o site no dia em que a CDN publicar. Aponte para uma versão exata e atualize os dois juntos.

Perguntas frequentes

Qual algoritmo devo usar?

sha384 é a escolha habitual e o que a maioria das CDNs publica. sha256 é aceito e sha512 é mais forte, mas a diferença não é o ponto fraco deste desenho — fixar a versão errada é.

O script parou de carregar depois que adicionei o atributo.

Quase sempre uma de três coisas: o arquivo mudou na CDN, `crossorigin="anonymous"` está faltando, ou o hash foi tirado de um build diferente do que está sendo servido (um arquivo minificado contra um não minificado, por exemplo).

O SRI protege contra um script comprometido que sempre foi hostil?

Não. Ele garante que você recebe os bytes que fixou, nada mais. Se a versão que você fixou já tinha uma porta dos fundos, o SRI entrega fielmente essa porta dos fundos toda vez.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.