Carregar uma biblioteca a partir de um CDN é prático, mas introduz uma dependência externa. Subresource Integrity (SRI) permite ao navegador verificar se o ficheiro recebido corresponde exatamente à impressão digital esperada.
Subresource Integrity (SRI): verificar a integridade dos recursos externos
Saiba como o SRI utiliza uma impressão digital criptográfica para verificar se um script ou uma folha de estilos externa corresponde ao ficheiro esperado.
Mostrar índice
O princípio
Calcula-se uma impressão digital criptográfica de uma versão específica do ficheiro e adiciona-se esse valor ao atributo integrity da etiqueta correspondente. Se o conteúdo transferido não produzir a mesma impressão digital, o navegador recusa-se a utilizá-lo.
O gerador de hash SRI permite preparar este valor localmente.
O SRI é adequado para recursos estáveis
O mecanismo funciona bem com um recurso versionado e imutável. Se o fornecedor alterar o ficheiro mantendo o mesmo URL, a impressão digital muda e o recurso será bloqueado. É precisamente o comportamento pretendido para garantir a integridade, mas deve ser integrado no processo de atualização.
crossorigin pode ser necessário
Para recursos provenientes de outra origem, a configuração CORS e o atributo crossorigin devem ser compatíveis com o carregamento SRI. É portanto necessário testar o comportamento real, e não apenas copiar uma impressão digital.
SRI e CSP são complementares
A CSP responde sobretudo à pergunta «que origens e conteúdos são autorizados?». O SRI responde a «este ficheiro específico corresponde à versão esperada?». Uma origem autorizada pode ainda fornecer um ficheiro alterado; o SRI acrescenta então uma verificação de integridade.
Para compreender a diferença entre impressão digital, encriptação e comparação, continue com o guia Hash e integridade.
Este artigo foi útil?
Fontes e referências
- W3C — Subresource Integrity (abre num novo separador)Página em inglês
- MDN — Subresource Integrity (abre num novo separador)Página em inglês