Gjenerues hash SRI
Gjenero hash-e Subresource Integrity (SRI) sha384 për një skedar JavaScript ose CSS dhe kopjo atributet integrity e crossorigin të gatshme, lokalisht.
Ngjit përmbajtjen e skedarit ose hap vetë skedarin: ky mjet nuk shkarkon URL. Leximi i një skripti nga një faqe tjetër do të kërkonte që ai server ta lejojë (CORS) ose një server i yni që ta marrë për ty, dhe asgjë që bën hash këtu nuk largohet nga shfletuesi yt. Bëj hash skedarit të saktë që do të shërbesh.
Teksti merr hash si UTF-8. Shfletuesit i kthejnë mbarimet e rreshtit të Windows (CRLF) në LF në tekstin e ngjitur, dhe një bajt i ndryshuar e prish hash-in: kur ke dyshim, hap vetë skedarin.
URL shkruhet vetëm në copëzë, nuk kërkohet kurrë. Lëre bosh për të përdorur emrin e skedarit.
Si të gjenerosh një hash SRI
- Te Hash i, zgjidh Kodit të ngjitur ose Skedarëve.
- Ngjit përmbajtjen e saktë të skriptit ose të fletës së stilit te Përmbajtja e skriptit ose e fletës së stilit dhe shtyp Gjenero hash SRI, ose hiq një a më shumë skedarë
.jse.cssnë zonën e lëshimit. Hash-et përditësohen ndërsa shkruan. - Lëre të shënuar SHA-384 (e rekomanduar), ose shto SHA-256 dhe SHA-512. Çdo algoritëm i shënuar shton një token te vlera.
- Zgjidh Etiketën (automatike nga emri i skedarit,
<script>,<script type="module">ose<link rel="stylesheet">), shkruaj URL e burimit për copëzën (opsionale) dhe zgjidh mënyrëncrossorigin. - Kopjo vlerën integrity ose etiketën e plotë.
- Për të kontrolluar një etiketë që përdor tashmë, ngjit vlerën e saj ose gjithë etiketën te Kontrollo një vlerë integrity ekzistuese (opsionale).
Çfarë bën Subresource Integrity
Kur një faqe ngarkon një skript nga një CDN, shfletuesi i beson çfarëdo që kthen ai server. Nëse CDN-ja kompromentohet ose skedari ndryshohet, kodi i modifikuar ekzekutohet me akses të plotë te faqja jote. Subresource Integrity (W3C SRI) e mbyll këtë hendek: publikon hash-in e pritur të skedarit te atributi integrity, shfletuesi i bën hash asaj që shkarkon, dhe refuzon ta ekzekutojë skriptin ose ta aplikojë fletën e stilit nëse të dyja ndryshojnë.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Vlera është emri i algoritmit, një vizë dhe përmbledhja (digest) e bajteve të skedarit e koduar në Base64. Ai shembull është hash-i i alert('Hello, world.'); nga specifikimi SRI. Kur listohen disa hash-e, shfletuesit shikojnë vetëm algoritmin më të fortë të pranishëm dhe e pranojnë skedarin nëse ndonjë hash i atij algoritmi përputhet. Kështu një faqe mund të listojë dy versione të një skedari gjatë një zhvillimi të ndërmjetëm.
Pse kërkohet crossorigin
Për një skedar në një origjinë tjetër, shfletuesi mund të kontrollojë integritetin e tij vetëm nëse përgjigjja merret në mënyrën CORS, ndaj etiketa ka nevojë për atributin crossorigin dhe serveri duhet të përgjigjet me header-in Access-Control-Allow-Origin. Përdor anonymous (pa cookie) për CDN publike; use-credentials është për burime private të rralla. Pa CORS, shfletuesi e bllokon skedarin në vend që ta ngarkojë pa kontroll.
Pse ky mjet nuk shkarkon URL
Ky mjet i bën hash vetëm kodit që ngjit ose skedarëve që hap. Shkarkimi i një skripti nga URL e tij brenda faqes do të funksiononte vetëm kur ai server lejon lexime ndër-origjinë, dhe anashkalimi i kësaj do të kërkonte një server që ta marrë skedarin për ty, i cili do të shihte edhe çfarë bën hash. Gjithçka këtu ekzekutohet në shfletuesin tënd. Metoda më e thjeshtë është të shkarkosh skedarin e saktë që do të referencosh (të njëjtin version dhe të njëjtin build të minifikuar) dhe ta hapësh këtu.
Pyetje të shpeshta
Cilin algoritëm duhet të përdor?
SHA-384 është zgjedhja e zakonshme dhe ajo që publikojnë shumica e CDN-ve. SHA-256 dhe SHA-512 mbështeten gjithashtu nga të gjithë shfletuesit modernë. MD5 dhe SHA-1 nuk lejohen në SRI.
Hash-i im është i saktë, por shfletuesi prapë e bllokon skedarin. Pse?
Kontrollo që serveri dërgon Access-Control-Allow-Origin dhe që etiketa ka crossorigin. Sigurohu edhe që CDN-ja shërben të njëjtat bajte: një version tjetër, një minifikues automatik ose mungesa e ndarjes së fundit të rreshtit e ndryshojnë të gjitha hash-in.
Pse kodi i ngjitur jep hash tjetër nga skedari?
Shfletuesit i konvertojnë mbarimet e rreshtit të Windows (CRLF) në LF në fushat e tekstit, dhe një editor mund të shtojë ose heqë një byte order mark ose një rresht të ri në fund. Hap vetë skedarin për të bërë hash bajteve të tij të sakta.
A më duhet SRI për skedarë në domenin tim?
Mbron nga ndryshimet e bëra pasi ke llogaritur hash-in, ndaj ka më shumë rëndësi për hostet e palëve të treta. Për skedarët e tu, një bundler që gjeneron hash-et gjatë build-it zakonisht është më i thjeshtë.
A funksionon SRI për imazhe ose shkronja?
Atributi integrity mbështetet te <script> dhe <link rel="stylesheet"> (si dhe te <link rel="preload"> ose modulepreload për këto). Imazhet dhe shkronjat nuk mund ta përdorin.
Mjete të ngjashme
- Gjeneratori i hash Gjenero hash MD5, SHA-1, SHA-256 dhe SHA-512 për tekste ose skedarë të çdo madhësie dhe verifiko checksum-et. Gjithçka funksionon në shfletuesin tënd.
- Koduesi dhe dekoduesi Base64 Kodues dhe dekodues Base64 falas me mbështetje të plotë UTF-8 dhe opsion base64url. Funksionon plotësisht në shfletuesin tënd, asgjë nuk ngarkohet.
- Shikuesi i skedarëve HAR Hap një skedar .har në shfletuesin tënd për të inspektuar kërkesat, titujt, cookie-t, kohët dhe ujëvarën, pastaj pastroje para se ta ndash. Asgjë nuk ngarkohet.