Subresource Integrity (SRI) es un mecanismo de seguridad que permite a los navegadores web verificar la integridad de los recursos (scripts, hojas de estilo) que se cargan desde servidores de terceros, como Content Delivery Networks (CDNs). Funciona mediante la especificación de un hash criptográfico (actualmente SHA-256, SHA-384 o SHA-512) del contenido esperado del recurso en el atributo 'integrity' de las etiquetas HTML <script> o <link>. Cuando el navegador descarga el recurso, calcula su hash y lo compara con el valor proporcionado. Si los hashes no coinciden, el navegador bloquea la carga del recurso, mitigando así ataques de inyección de código o manipulación de recursos.

SRI es ampliamente implementado en el mundo real por sitios web que dependen de CDNs para servir bibliotecas JavaScript populares como jQuery, React, o Bootstrap, así como hojas de estilo. Por ejemplo, al incluir un script de un CDN, un desarrollador añadiría `<script src="https://example.com/script.js" integrity="sha384-oqVuAfSRK+zSZBO/eXoRI+nrVSFz+3t5+ZJg/uJ+f" crossorigin="anonymous"></script>`. El atributo `crossorigin="anonymous"` es crucial para que el navegador envíe credenciales nulas y evite la fuga de información sensible, además de permitir la verificación de SRI. Herramientas de construcción como Webpack o Gulp, a través de plugins, pueden automatizar la generación de estos hashes SRI durante el proceso de 'build'.

Para un Arquitecto de Sistemas, SRI es fundamental para fortalecer la postura de seguridad de las aplicaciones web, especialmente aquellas que externalizan la entrega de recursos. Permite mitigar riesgos asociados a la cadena de suministro de software, como la manipulación de CDNs o la inyección de código malicioso en recursos de terceros. Sin embargo, introduce consideraciones de diseño: requiere que los hashes se actualicen cada vez que un recurso externo cambia, lo que puede ser un desafío en entornos de integración continua/despliegue continuo (CI/CD) si no se automatiza. Además, el uso de SRI puede complicar la depuración si los recursos se modifican dinámicamente o si los CDNs entregan versiones ligeramente diferentes. La decisión de implementar SRI implica un 'trade-off' entre la seguridad mejorada y una ligera complejidad adicional en el proceso de 'build' y gestión de dependencias.