Subresource Integrity (SRI) to mechanizm przeglądarki, który sprawdza integralność zasobów ładowanych z zewnątrz, takich jak skrypty i style z CDN. Przeglądarka porównuje skrót pobranego pliku z podanym w atrybucie integrity i odrzuca zasób, jeśli się nie zgadza.
Jak zapisać SRI?
<script src="https://cdn.example/biblioteka.min.js"
integrity="sha384-..."
crossorigin="anonymous"></script>
Skrót generuje się z pliku (np. poleceniem openssl dgst -sha384 -binary) lub za pomocą narzędzi online. Dokumentacja jest dostępna w MDN.
Przed czym chroni?
Przed sytuacją, gdy CDN lub dostawca biblioteki zostanie zhakowany i do pliku trafi złośliwy kod. Bez SRI przeglądarka wykona zmienioną wersję, a z SRI zablokuje ją, bo skrót się nie zgadza. To jedna z metod ochrony przed atakami na łańcuch dostaw.
Ograniczenia
- nie działa dla zasobów, które zmieniają się dynamicznie (np. skrypt analityczny aktualizowany przez dostawcę),
- przy aktualizacji pliku trzeba zmienić skrót,
- wymaga poprawnych nagłówków CORS po stronie CDN.