integralność - określa wartość skrótu zasobu (np. sumy kontrolnej), którą należy dopasować, aby przeglądarka go wykonała. Hash zapewnia, że plik nie został zmodyfikowany i zawiera oczekiwane dane. W ten sposób przeglądarka nie będzie ładować różnych (np. Złośliwych) zasobów. Wyobraź sobie sytuację, w której twoje pliki JavaScript zostały zhakowane w CDN i nie było możliwości, aby to wiedzieć. Atrybut integralności zapobiega ładowaniu treści, które nie są zgodne.
Nieprawidłowy SRI zostanie zablokowany (narzędzia dla programistów Chrome), niezależnie od pochodzenia. Poniżej przypadku NON-CORS, gdy atrybut integralności nie jest zgodny:
Integralność można obliczyć za pomocą: https://www.srihash.org/
Lub wpisując w konsoli ( link ):
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A
crossorigin - określa opcje używane, gdy zasób jest ładowany z serwera innego pochodzenia. (Zobacz CORS (wspólne udostępnianie zasobów) tutaj: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Skutecznie zmienia żądania HTTP wysyłane przez przeglądarkę. Jeśli zostanie dodany atrybut „crossorigin” - spowoduje to dodanie pary klucz-wartość pochodzenia <ORIGIN> do żądania HTTP, jak pokazano poniżej.
crossorigin może być ustawiony na „anonimowy” lub „poświadczenia użytkowania”. Oba spowodują dodanie pochodzenia: do żądania. Ten ostatni zapewni jednak sprawdzenie poświadczeń. Brak atrybutu crossorigin w tagu spowoduje wysłanie żądania bez źródła: pary klucz-wartość.
Oto przypadek, gdy żądamy „poświadczeń użytkowania” od CDN:
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="use-credentials"></script>
Przeglądarka może anulować żądanie, jeśli niepoprawnie ustawiono crossorigin.
Linki
- https://www.w3.org/TR/cors/
- https://tools.ietf.org/html/rfc6454
- https://developer.mozilla.org/en-US/docs/Web/HTML / Element / link
Blogi
- https://frederik-braun.com/using-subresource-integrity.html
- https://web-security.guru/en/web-security/subresource-integrity
Attribute integrity not allowed on element link at this point.