Utilia

SRI räsi generaator

Loo JavaScripti või CSS-faili jaoks Subresource Integrity (SRI) sha384 räsi ja kopeeri valmis integrity ja crossorigin atribuudid. Töötab kohapeal.

Kleebi faili sisu või ava fail ise: see tööriist ei lae aadresse alla. Teise saidi skripti lugemine eeldaks, et see server seda lubab (CORS), või meie enda serverit, mis selle sinu eest tooks, ning midagi, mida siin räsid, ei lahku sinu brauserist. Räsi täpselt seda faili, mida hakkad serveerima.

Räsi

Tekst räsitakse UTF-8 kujul. Brauserid muudavad kleebitud tekstis Windowsi reavahetused (CRLF) LF-iks ja üks muutunud bait rikub räsi: kahtluse korral ava fail ise.

Algoritmid

URL kirjutatakse ainult lõiku, seda ei päritagi. Tühjaks jättes kasutatakse faili nime.

Kuidas SRI räsi luua

  1. Vali jaotises Räsi Kleebitud kood või Failid.
  2. Kleebi skripti või laadilehe täpne sisu lahtrisse Skripti või laadilehe sisu ja vajuta Loo SRI räsi või lohista üks või mitu .js ja .css faili lohistusalale. Räsid uuenevad sisestamise ajal.
  3. Jäta märgituks SHA-384 (soovitatav) või lisa SHA-256 ja SHA-512. Iga märgitud algoritm lisab väärtusele ühe märgendi.
  4. Vali Silt (automaatne faili nime järgi, <script>, <script type="module"> või <link rel="stylesheet">), kirjuta Ressursi URL lõigu jaoks (valikuline) ja vali crossorigin režiim.
  5. Kopeeri integrity väärtus või kogu silt.
  6. Juba kasutatava sildi kontrollimiseks kleebi selle väärtus või kogu silt lahtrisse Kontrolli olemasolevat integrity väärtust (valikuline).

Mida Subresource Integrity teeb

Kui leht laadib skripti sisuedastusvõrgust (CDN), usaldab brauser kõike, mida see server tagastab. Kui CDN on kompromiteeritud või faili on muudetud, käivitub muudetud kood täieliku juurdepääsuga sinu lehele. Subresource Integrity (W3C SRI) sulgeb selle augu: avaldad faili oodatud räsi atribuudis integrity, brauser räsib alla laaditud faili ja keeldub skripti käivitamast või laadilehte rakendamast, kui need kaks erinevad.

<script src="https://cdn.example.com/lib.min.js"
        integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
        crossorigin="anonymous"></script>

Väärtus on algoritmi nimi, kriips ja faili baitide Base64-kodeeritud kokkuvõte. See näide on SRI spetsifikatsioonist pärit alert('Hello, world.'); räsi. Kui loetletud on mitu räsi, vaatavad brauserid ainult kõige tugevamat olemasolevat algoritmi ja aktsepteerivad faili, kui mõni selle algoritmi räsi ühtib. Nii saab sait uue versiooni juurutamise ajal loetleda faili kaht versiooni.

Miks crossorigin on nõutav

Teise päritolu faili puhul saab brauser selle terviklust kontrollida ainult siis, kui vastus on pärit CORS-režiimis, seega vajab silt atribuuti crossorigin ja server peab vastama päisega Access-Control-Allow-Origin. Avalike CDN-ide jaoks kasuta anonymous (ilma küpsisteta); use-credentials on harvaesinevate privaatsete ressursside jaoks. Ilma CORS-ita blokeerib brauser faili, selle asemel et seda kontrollimata laadida.

Miks see tööriist aadresse ei lae

See tööriist räsib ainult koodi, mille kleebid, või faile, mille avad. Skripti allalaadimine selle aadressilt lehe seest töötaks ainult siis, kui see server lubab päritoluülest lugemist, ning selle ümbersõitmiseks oleks vaja serverit, mis faili sinu eest tooks ja näeks ka seda, mida räsid. Siin töötab kõik sinu brauseris. Lihtsaim viis on laadida alla täpne fail, millele viitad (sama versioon ja sama minimeeritud ehitus), ja avada see siin.

Korduma kippuvad küsimused

Millist algoritmi peaksin kasutama?

SHA-384 on tavaline valik ja seda avaldab enamik CDN-e. SHA-256 ja SHA-512 toetavad samuti kõik tänapäevased brauserid. MD5 ja SHA-1 ei ole SRI-s lubatud.

Minu räsi on õige, kuid brauser blokeerib faili. Miks?

Kontrolli, et server saadab päise Access-Control-Allow-Origin ja et sildil on crossorigin. Veendu ka, et CDN serveerib samu baite: erinev versioon, automaatne minimeerija või puuduv lõpu reavahetus muudavad kõik räsi.

Miks annab kleebitud kood faili omast erineva räsi?

Brauserid muudavad tekstiväljades Windowsi reavahetused (CRLF) LF-iks ja redaktor võib lisada või eemaldada baidijärjekorra märgi või lõpu reavahetuse. Ava fail ise, et räsida selle täpsed baidid.

Kas vajan SRI-d oma domeeni failide jaoks?

See kaitseb muudatuste eest, mis tehti pärast räsi arvutamist, seega on see kõige olulisem kolmandate osapoolte hostide puhul. Oma failide jaoks on tavaliselt lihtsam ehitusvahend, mis genereerib räsid ehitamise ajal.

Kas SRI töötab piltide või fontide jaoks?

Atribuuti integrity toetatakse märgendil <script> ja <link rel="stylesheet"> (ning nende jaoks märgendil <link rel="preload"> või modulepreload). Pildid ja fondid seda kasutada ei saa.