Integrität - Definiert den Hashwert einer Ressource (wie eine Prüfsumme), die abgeglichen werden muss, damit der Browser sie ausführt. Der Hash stellt sicher, dass die Datei unverändert war und erwartete Daten enthält. Auf diese Weise lädt der Browser keine unterschiedlichen (z. B. böswilligen) Ressourcen. Stellen Sie sich eine Situation vor, in der Ihre JavaScript-Dateien auf dem CDN gehackt wurden und es keine Möglichkeit gab, dies zu wissen. Das Integritätsattribut verhindert das Laden von Inhalten, die nicht übereinstimmen.
Ungültige SRI werden blockiert (Chrome Developer-Tools), unabhängig von der Herkunft. Unterhalb des NON-CORS-Falls, wenn das Integritätsattribut nicht übereinstimmt:
Die Integrität kann berechnet werden unter: https://www.srihash.org/
Oder durch Eingabe in die Konsole ( Link ):
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A
crossorigin - Definiert Optionen, die verwendet werden, wenn die Ressource von einem Server auf einem anderen Ursprung geladen wird. (Siehe CORS (Cross-Origin Resource Sharing) hier: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Es ändert effektiv die vom Browser gesendeten HTTP-Anforderungen. Wenn das Attribut "crossorigin" hinzugefügt wird, wird das Schlüssel-Wert-Paar origin: <ORIGIN> zur HTTP-Anforderung hinzugefügt, wie unten gezeigt.
crossorigin kann entweder auf "anonym" oder "Anmeldeinformationen" gesetzt werden. Beides führt zum Hinzufügen von origin: zur Anforderung. Letzteres stellt jedoch sicher, dass die Anmeldeinformationen überprüft werden. Kein Crossorigin-Attribut im Tag führt zum Senden einer Anforderung ohne Ursprung: Schlüssel-Wert-Paar.
Hier ist ein Fall, in dem "Use-Credentials" von CDN angefordert werden:
<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>
Ein Browser kann die Anforderung abbrechen, wenn Crossorigin falsch eingestellt ist.
Links
- https://www.w3.org/TR/cors/
- https://tools.ietf.org/html/rfc6454
- https://developer.mozilla.org/en-US/docs/Web/HTML / Element / Link
Blogs
- 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.