Apa atribut integritas dan crossorigin?

363

Bootstrapcdn baru-baru ini mengubah tautannya. Sekarang terlihat seperti ini:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" 
rel="stylesheet" 
integrity="sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" 
crossorigin="anonymous">

Apa arti integritydan crossoriginatribut? Bagaimana mereka memengaruhi pemuatan stylesheet?

Pengguna baru
sumber

Jawaban:

237

Kedua atribut telah ditambahkan ke Bootstrap CDN untuk mengimplementasikan Integritas Subresource .

Subresource Integrity mendefinisikan mekanisme di mana agen pengguna dapat memverifikasi bahwa sumber daya yang diambil telah disampaikan tanpa manipulasi yang tidak terduga. Referensi

Atribut integritas adalah untuk memungkinkan browser memeriksa sumber file untuk memastikan bahwa kode tidak pernah dimuat jika sumber telah dimanipulasi.

Atribut Crossorigin hadir saat permintaan dimuat menggunakan 'CORS' yang sekarang menjadi persyaratan pemeriksaan SRI saat tidak dimuat dari 'asal-sama'. Info lebih lanjut tentang crossorigin

Lebih detail tentang implementasi Bootstrap CDNs

jim.taylor.1974
sumber
2
Baru saja menggunakan validator html w3c dan mendapatkan pesan ini saat menggunakan atribut "integritas":Attribute integrity not allowed on element link at this point.
Tomas Gonzalez
9
@TomasGonzalez Saya pikir Anda dapat dengan aman berasumsi bahwa alat w3c belum diperbarui untuk menyertakan dukungan SRI
Josh_at_Savings_Champion
5
FYI: Mengarsipkan
jonathanKingston
72
Maintainer dari W3C HTML Checker (alias validator) di sini. Ya, maaf, pemeriksa belum tahu apa-apa tentang integrityatribut itu. Tetapi saya akan segera menambahkan dukungan untuk itu, seperti yang diminta di github.com/validator/validator/issues/151 . Jadi, Anda mungkin ingin berlangganan ke masalah itu untuk mendapat pemberitahuan saat mendarat.
sontonbarker
7
OnlineWebCheck.com mendukung integrityatribut (Saya adalah pengelola pemeriksa itu).
Albert Wiersch
112

integritas - mendefinisikan nilai hash sumber daya (seperti checksum) yang harus dicocokkan untuk membuat browser mengeksekusinya. Hash memastikan bahwa file tidak dimodifikasi dan berisi data yang diharapkan. Dengan cara ini browser tidak akan memuat sumber daya yang berbeda (mis. Jahat). Bayangkan sebuah situasi di mana file JavaScript Anda diretas di CDN, dan tidak ada cara untuk mengetahuinya. Atribut integritas mencegah pemuatan konten yang tidak cocok.

SRI tidak valid akan diblokir (alat pengembang Chrome), terlepas dari asal-usulnya. Di bawah kasus NON-CORS ketika atribut integritas tidak cocok:

masukkan deskripsi gambar di sini

Integritas dapat dihitung menggunakan: https://www.srihash.org/ Atau mengetik ke konsol ( tautan ):

openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A

crossorigin - mendefinisikan opsi yang digunakan ketika sumber daya dimuat dari server dengan asal yang berbeda. (Lihat CORS (Berbagi Sumber Daya Silang) di sini: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Ini secara efektif mengubah permintaan HTTP yang dikirim oleh browser. Jika atribut "crossorigin" ditambahkan - itu akan menghasilkan penambahan asal: <ORIGIN> pasangan nilai kunci ke dalam permintaan HTTP seperti yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

crossorigin dapat diatur ke "anonim" atau "gunakan-kredensial". Keduanya akan menghasilkan penambahan asal: ke dalam permintaan. Namun yang terakhir akan memastikan bahwa kredensial diperiksa. Atribut crossorigin dalam tag tidak akan menghasilkan pengiriman permintaan tanpa asal: pasangan nilai kunci.

Ini adalah kasus ketika meminta "kredensial penggunaan" dari 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>

Peramban dapat membatalkan permintaan jika crossorigin tidak diatur dengan benar.

masukkan deskripsi gambar di sini

Tautan
- https://www.w3.org/TR/cors/
- https://tools.ietf.org/html/rfc6454
- https://developer.mozilla.org/en-US/docs/Web/HTML / Elemen / tautan

Blog
- https://frederik-braun.com/using-subresource-integrity.html
- https://web-security.guru/en/web-security/subresource-integrity

Witold Kaczurba
sumber
6
Jawaban yang sangat berguna!
Emiel Koning
4
Terima kasih atas jawaban anda. Saya suka detail teknis!
Anh Tran
Bagaimana kita bisa tahu apakah integritas file itu belum dimanipulasi? Ada saran?
vadi taslim
@ yon.fun: tolong jangan sarankan suntingan untuk menambahkan tautan Anda sendiri. Kami cukup sensitif terhadap kemungkinan spam di sini, bahkan jika konten Anda sangat berharga.
halfer
1

Secara teknis, atribut Integritas membantu hanya dengan itu - memungkinkan verifikasi sumber data yang tepat. Artinya, itu hanya memungkinkan browser untuk memverifikasi angka-angka dalam file sumber yang tepat dengan jumlah yang diminta oleh file sumber yang terletak di server CDN.

Akan sedikit lebih dalam, dalam hal nilai hash terenkripsi yang ditetapkan dari sumber ini dan kepatuhannya terhadap nilai yang telah ditentukan di browser - kode dijalankan, dan permintaan pengguna berhasil diproses.

Atribut Crossorigin membantu pengembang mengoptimalkan tingkat kinerja CDN, pada saat yang sama, melindungi kode situs web dari skrip berbahaya.

Secara khusus, Crossorigin mengunduh kode program situs dalam mode anonim, tanpa mengunduh cookie atau melakukan prosedur otentikasi. Dengan cara ini, itu mencegah kebocoran data pengguna ketika Anda pertama kali memuat situs pada server CDN tertentu, yang penipu jaringan dapat dengan mudah mengganti alamat.

Sumber: https://yon.fun/what-is-link-integrity-and-crossorigin/

yon.fun
sumber